После переноса сайта под управлением WordPress на другой хостинг нередко возникает проблема с работой постоянных ссылок. Когда главная страница сайта отображается полностью как положено, но при переходе по любой из ссылок на сайте в браузере можно увидеть только сообщение об ошибке.
Рассмотрим способы разрешения данной ситуации в соответствии с возможными причинами её возникновения.
Ошибка в самом WordPress
Данная особенность работы WordPress известна уже давно, однако на момент написания статьи она так и не была исправлена.
Для того чтобы постоянные ссылки заработали нужно в админпанели сайта в разделе «Настройки»-«Постоянные ссылки» изменить тип постоянных ссылок на любой другой (обязательно с сохранением настроек). А, после этого задать прежний тип постоянных ссылок.
Если причина была именно в WordPress после вышеизложенных манипуляций постоянные ссылки должны заработать.
Подключение к сайту не защищено как исправить, читайте в дополнительном материале
В файле .htaccess отсутствуют необходимые директивы
Для работы постоянных ссылок в файле .htaccess в корневом каталоге сайта должен присутствовать следующий набор директив.
1 2 3 4 5 6 |
RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] |
Как правило, его прописывает сам WordPress. Если же указанные директивы в файле .htaccess всё-таки отсутствуют их следует прописать самостоятельно.
Не работает файл .htaccess
Эту причину можно условно разделить на целых две:
- В конфигурации виртуального хоста Apache отключена поддержка .htaccess;
- У Apache не подключен модуль Rewrite, который собственно и обеспечивает поддержку .htaccess этим web сервером.
Важно, сразу отметить, что действия, описанные ниже можно выполнить далеко не на каждом хостинге. Поэтому, если ваш хостинг не предоставляет вам непосредственный доступ к файлам конфигурации Apache, лучше сразу обратиться в техническую поддержку вашего хостинг провайдера.
В первом случае необходимо проверить содержимое конфигурационного файла виртуального хоста Apache, на котором развёрнут сайт. Конфигурационные файлы виртуальных хостов хранятся в директории /etc/apache2/sites-available.
В файле конфигурации должны быть следующие строки:
1 2 3 4 |
Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all |
Если они отсутствуют их необходимо добавить. Если они есть, то значение параметра AllowOwerride следует установить равным all (как в примере выше). После этого нужно сохранить сделанные изменения и либо перезагрузить Apache, либо обновить его конфигурацию.
На процессе настройки виртуального хоста подробно останавливаться не станем, так как о виртуальных хостах Apache уже была соответствующая статья.
Во втором случае необходимо включить модуль Rewrite. Для этого в консоли выполняем соответствующую команду.
1 |
sudo a2enmod rewrite |
После этого необходимо включить поддержку .htaccess в конфигурации виртуального хоста, как это было описано выше, если она не была включена ранее.
После завершения всех операций обязательно перезапускаенм Apache
1 |
sudo service apache2 restart |
Диагностика причин возникновения проблемы
Как определить, что стало причиной неработоспособности постоянных ссылок и устранить проблему?
Рекомендуется выполнять диагностику работы сайта последовательно по принципу «от простого к сложному».
- Изменяем в админпанели тип постоянных ссылок и после этого возвращаем прежнее значение. Если проблем была в самом WordPress, поиск и устранение «неисправностей» на этом закончатся;
- Изучаем содержимое файла .htaccess. Если при наличии в нём необходимых директив постоянные ссылки не работают, переходим к работе непосредственно с Apache;
- Проверяем файл конфигурации виртуального хоста. Если после внесения в него всех исправлений и перезапуска или обновления конфигурации Apache постоянные ссылки всё равно не заработали, переходим к последнему шагу;
- Подключаем модуль Rewrite.
Приведённого алгоритма достаточно для того чтобы успешно разрешить абсолютное большинство ситуаций, связанных с неработоспособностью постоянных ссылок.
Спасибо! Помогло добавление .htaccess
Большое спасибо автору, вариант с отсутствием .htaccess помог, заработало.
Спасибо! Помогло добавление htaccess
Спасибо . Помогло «Ошибка в самом WordPress» .