После миграции сервера работает только домашняя страница


33

Я недавно изменил хостинг моего сайта WordPress на VPS.net . Я переместил все свои файлы и импортировал базу данных. Все было в порядке, пока я не нажал на ссылку и не заметил, что все мои страницы возвращают 404, кроме главной страницы.

URL сайта - http://inksquared.com


Ответы:


42

Я думаю, вы получите http: // ваш сайт, но http: // ваш сайт / что-нибудь

У меня была похожая проблема, и она была решена, когда я изменился

httpd.confот

AllowOverride None

в

AllowOverride All

Насколько я понимаю, это вступит в .htaccessсилу.


6
Этот работал для меня. Большинство людей об этом забывают.
qasimzee

1
Это тоже сработало для меня, нужно было только изменить его в разделе apache2.confдля расположения файлов моего сервера, /var/wwwв моем случае
sponrad

1
Это было частью ответа для меня. Я добавил AllowOverride Allв конфигурацию сайта, но я также добавил Options FollowSymLinks. Затем я смог использовать пользовательские постоянные ссылки, которые также создали соответствующий корневой файл .htaccess. После этого все заработало.
boot13

1
И не забудьте перезапустить Apache! "sudo service apache2 restart"
gradosevic

1
Это сработало. Убедитесь, что вы изменили параметр AllowOverride в местах в файле conf.
Наджиб

44

Попробуйте очистить ваши правила mod_rewrite:

Панель инструментов -> Настройки -> Постоянные ссылки

Сохранить настройки (нет необходимости вносить изменения)


7
Не нужно даже экономить, на самом деле. Правила сбрасываются, просто посещая эту страницу, и часть сброса правил включает запись в .htaccess.
Джон П Блох

Я узнаю что-то новое каждый день ... :)
Чип Беннетт

@john вы уверены, что при загрузке страницы пишите в .htaccess, если это необходимо? У меня сложилось впечатление, что сбрасываются только rewrite_rules в базе данных.
Ashfame

Вызов wp-admin / options-permalinks.php flush_rewrite_rules(), обертка для WP_Rewrite::flush_rules()которой она $hardвызывает true( если она есть (когда она вызывается на этой странице) и save_mod_rewrite_rulesсуществует функция (определенная в wp-admin/includes/misc.php, включенная во все страницы администратора)) save_mod_rewrite_rules(). См. Определение этой функции здесь: core.trac.wordpress.org/browser/trunk/wp-admin/includes/…
Джон П Блох

Функция, которая на самом деле записывает правила перезаписи в .htaccess, вызывается insert_with_markers(используется save_mod_rewrite_rules()выше), определенная здесь: core.trac.wordpress.org/browser/trunk/wp-admin/includes/…
Джон П Блох,

27

Я столкнулся с той же проблемой.

Я сделал следующее, чтобы решить это на сервере Ubuntu:

  1. В /etc/apache2/apache2.conf отредактируйте AllowOverride None для / var / www /, чтобы AllowOverride All

  2. Введите следующую команду, чтобы включить mod_rewrite для .htaccess

sudo a2enmod переписать

  1. Перезагрузите сервер Apache:

перезапуск службы sudo apache2

Проблема решена !!!


Спасибо, я не мог исправить это ни с одним из других предложений, но a2enmod rewriteсделал свое дело.
Мартин МакКаллион,

+1 За упоминание мода переписать. Не понял, что это не было включено по умолчанию.
Родной кодер

Определенно нужно, sudo a2enmod rewriteчтобы получить этот wokring, спасибо!
Huskie69

1
Благодарность! Команда a2enmod rewriteсделала свое дело для меня.
Лукас Баскеротто

Спасибо Авинаш! То же самое с Лукасом, перезапись a2enmod сделала свое дело для меня
Джеро Дунгог

1

Причина, скорее всего, в том, что .htaccessфайл не был скопирован. В Mac OS X и в некоторых приложениях FTP этот файл считается «скрытым», поскольку он начинается с .. Если вы перейдете в раздел «Настройки -> Постоянные ссылки» в разделе администратора, вы можете восстановить этот файл, но, вероятно, лучше найти версию, которая была у вас ранее, и использовать ее снова (особенно если вы используете плагин кэширования).


1

В Ubuntu 14.04 - файл 000-default.conf можно найти здесь/etc/apache2/sites-available

Или, если вы запускаете несколько wp, настройкой виртуального хоста будет ваше имя файла конфигурации. например, домен.conf

Вы должны заменить AllowOverride NoneнаAllowOverride All

Надеюсь, это сработает.


0

Вы получаете веб-сервер 404 или WordPress 404? Если это веб-сервер 404, вы, скорее всего, не скопировали корневой файл htaccess из старой установки, или у него нет правильных разрешений для запуска.

Моим первым пунктом устранения неполадок будет проверка и проверка наличия файла htaccess в корневом каталоге. И если да, то, что он содержит.


Проверял файл .htaccess. Он содержит тот же код, который появился в разделе постоянных ссылок админ-панели WordPress. Я изменил разрешения на запись и не вижу видимых изменений.
mikeyrocks

3
@mikeyrocks Хмм ... еще одна возможность - на вашем новом сервере не включен mod_rewrite. Важно: вы получаете сервер 404 (обычную белую страницу с надписью «не найден») или WordPress 404 (в стиле остальной части вашего сайта)?
MathSmath
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.