После миграции сервера работает только главная страница
Недавно я перенес свой WordPress сайт на хостинг VPS.net. Я перенес все файлы и импортировал базу данных. Все казалось в порядке, пока я не нажал на ссылку и не заметил, что все мои страницы возвращают ошибку 404, кроме главной страницы.
URL сайта: http://inksquared.com
На самом деле, даже сохранять не нужно. Правила обновляются просто при посещении этой страницы, и часть процесса обновления включает запись в .htaccess.
John P Bloch
@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(). Определение этой функции можно посмотреть здесь: http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/misc.php#L114
John P Bloch
Функция, которая фактически записывает правила перезаписи в .htaccess, называется insert_with_markers (используется в save_mod_rewrite_rules() выше), её определение здесь: http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/misc.php#L53
John P Bloch
Нет необходимости открывать cPanel. Я сначала пробовал принятый ответ, но у меня shared hosting, поэтому не смог найти httpd.conf, а live chat все еще грузится. И тогда я нашел этот ответ, который оказался самым простым в использовании решением. :D
TheOnlyAnil
Это тоже сработало у меня, только пришлось изменить это в секции apache2.conf для расположения моих серверных файлов, в моем случае это /var/www
sponrad
Это было частью решения для меня. Я добавил AllowOverride All в конфигурацию сайта, но также добавил Options FollowSymLinks. После этого я смог использовать пользовательские постоянные ссылки, что также создало соответствующий корневой файл .htaccess. После этого всё заработало.
boot13
И не забудьте перезапустить apache! "sudo service apache2 restart"
gradosevic
Это сработало. Убедитесь, что вы изменили параметр AllowOverride в соответствующих местах в конфигурационном файле.
Najeeb
включение в httpd.conf LoadModule rewrite_module libexec/apache2/mod_rewrite.so помогло на mac. удалите #, чтобы активировать
stefanosn
Я столкнулся с такой же проблемой.
Вот что я сделал для её решения на сервере Ubuntu:
В файле /etc/apache2/apache2.conf изменил AllowOverride None для /var/www/ на AllowOverride All
Выполнил следующую команду для включения mod_rewrite для .htaccess
sudo a2enmod rewrite
- Перезапустил сервер Apache:
sudo service apache2 restart
Проблема решена!!!
Спасибо, ни одно из других предложений не помогло, но команда a2enmod rewrite сработала.
Martin McCallion
+1 За упоминание модуля rewrite. Не знал, что он не включен по умолчанию.
Native Coder
Определенно понадобилась команда sudo a2enmod rewrite, чтобы это заработало, спасибо!
Huskie69
В 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. Я изменил права на запись, но видимых изменений не наблюдается.
mikeyrocks