После миграции сервера работает только главная страница
Недавно я перенес свой WordPress сайт на хостинг VPS.net. Я перенес все файлы и импортировал базу данных. Все казалось в порядке, пока я не нажал на ссылку и не заметил, что все мои страницы возвращают ошибку 404, кроме главной страницы.
URL сайта: http://inksquared.com

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

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

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()
. Определение этой функции можно посмотреть здесь: http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/misc.php#L114

Функция, которая фактически записывает правила перезаписи в .htaccess, называется insert_with_markers
(используется в save_mod_rewrite_rules()
выше), её определение здесь: http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/misc.php#L53

Нет необходимости открывать cPanel. Я сначала пробовал принятый ответ, но у меня shared hosting, поэтому не смог найти httpd.conf, а live chat все еще грузится. И тогда я нашел этот ответ, который оказался самым простым в использовании решением. :D

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

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

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

Это сработало. Убедитесь, что вы изменили параметр AllowOverride в соответствующих местах в конфигурационном файле.

включение в httpd.conf LoadModule rewrite_module libexec/apache2/mod_rewrite.so помогло на mac. удалите #, чтобы активировать

Я столкнулся с такой же проблемой.
Вот что я сделал для её решения на сервере Ubuntu:
В файле /etc/apache2/apache2.conf изменил AllowOverride None для /var/www/ на AllowOverride All
Выполнил следующую команду для включения mod_rewrite для .htaccess
sudo a2enmod rewrite
- Перезапустил сервер Apache:
sudo service apache2 restart
Проблема решена!!!

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

+1 За упоминание модуля rewrite. Не знал, что он не включен по умолчанию.

Определенно понадобилась команда sudo a2enmod rewrite
, чтобы это заработало, спасибо!

В Ubuntu 14.04 файл 000-default.conf можно найти по пути /etc/apache2/sites-available
Или, если у вас несколько сайтов WordPress, настройки виртуального хоста будут находиться в соответствующем файле конфигурации. Например, domain.conf
Вам необходимо заменить AllowOverride None
на AllowOverride All
Надеюсь, это поможет.

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

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

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