There can be multiple things preventing the rewrite rule from working. My ubuntu server needed 3 things changed to get permalinks working.
In newer versions of apache2, you need to enable the module:
sudo a2enmod rewrite
sudo service apache2 restart
You may also need to modify the apache2.conf file.
sudo nano /etc/apache2/apache2.conf
Change your web directory override rule to AllowOverride All.
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
After that, restart the service again.
The .htaccess file in the WordPress install directory needs to be owned or readable/modifiable by the webserver.
This can be accomplished by changing owner to www-data (usually the webserver user), or changing permissions.
sudo chown www-data /var/www/wordpress-install/.htaccess
OR
sudo chmod 664 /var/www/wordpress-install/.htaccess
Login to your WordPress admin backend and save the permalink settings, and they should hopefully be working.
Если главная страница сайта отображается, а внутренние выдают ошибку 404 или 500, проблема заключается в отсутствии файла .htaccess или его неправильном содержании.
Внутренние страницы перестают открываться на CMS (WordPress, Joomla, DLE), поскольку в этих системах файл .htaccess имеет большое значение и часто видоизменяется. Проблема появляется при переносе сайта с одного виртуального хостинга на другой.
Оглавление статьи:
- Причины и решение ошибки 404/500
- Файл .htaccess для WordPress
- Хостинг на Windows и панель ISPmanager
Причины и решение ошибки 404/500
Файл .htaccess должен содержать записи, необходимые для работы CMS. При переносе сайта на новый хостинг, особенно через браузерные версии панелей хостеров, данный файл может не попасть в архив из-за настроек безопасности. Как следствие, на новом хостинге файла не будет, и правильно развернутая из бекапа и настроенная CMS работать не будет — кроме главной страницы. Наиболее часто проблема наблюдается на сайтах, где вместо стандартного отображения URL подключено ЧПУ.
Внутренние страницы перестают открываться, если:
- Файл .htaccess отсутствует. Проблема актуальна при переносе сайта с одного хостинга на другой.
- Файл пустой. Содержимое файла может быть удалено по ошибке, в результате заражения сайта вирусами или по иной причине.
- Содержимое файла изменено или повреждено. Если внутренние страницы сайта перестали работать после каких-либо действий с .htaccess, следует проверить файл на наличие всех директив, необходимых для работы CMS.

Отличительной особенностью ошибки с файлом .htaccess является измененный дизайн страницы 404/500. Страницы ошибки 404 будут отдаваться сервером и отличаться от оформления 404 у сайта (с шаблоном и дизайном, элементами навигации). Актуально, по крайней мере, для WordPress.
Для исправления ошибок нужно создать .htaccess с нужным содержимым. Содержание файла будет меняться в зависимости от CMS. Помимо указанного кода, в файле может содержаться любая информация и директивы, необходимые для функционирования сайта.
Файл .htaccess для WordPress
Каждая система управления контентом требует определенных директив для полноценного и корректного функционирования. Документ .htaccess должен располагаться в корне сайта и иметь, как минимум, указанное ниже содержание (для WordPress).
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Содержимое файлов для других популярных CMS можно без проблем найти в сети — там текста в разы больше, и в статью информация попросту бы не влезла. У WordPress содержимое файла не менялось годами, а потому ошибка одинаково хорошо решается на всех версиях движка.
Хостинг на Windows и панель ISPmanager
Любые операции с файлом .htaccess актуальны только для хостингов, расположенных на Linux-серверах. Сервера от Windows попросту не имеют такого файла — вместо него аналогичные функции выполняются в документе web.config. Уточнять содержимое данного файла следует в поддержке соответствующей CMS.
Помимо этого, проблема с ошибкой 404 на внутренних страницах актуальна для Linux-серверов с панелями ISPmanager. В этом случае требуется отключить автоподдомены, если они включены, и проверить наличие проблемы. Ошибки 404 и 500 могут исчезнуть и без замены .htaccess (либо с файлом изначально все нормально, если он присутствует в корне и правильно заполнен).
Thank you in advance for any help you might provide. I have read many other posts, and unfortunately the provided solutions did not work.
The problem is this: I have WordPress installed in a supdirectory
http://www.example.com/wordpress and would like to change the front end url to http://www.example.com/somethingelse
When I go to Settings > General and change the Site Address (URL) to http://www.example.com/somethingelse and check the front end, for http://www.example.com/somethingelse, it returns a WordPress custom 404 page. The permalink structure is http://www.example.com/somethingelse/?p=123 and return a root 404 error.
I have made sure that the .htaccess is correct (although when I try to update permalinks with the new Site URL it says its not writable) and that the proper permissions are set.
Now, keeping http://www.example.com/somethingelse as the Site URL setting, if I go to the original http://www.example.com/wordpress, the home page works, though all links show this structure http://www.example.com/somethingelse/?p=123
I have tried adding the URL define to wp-config.php of
define('WP_HOME','http://example.com/wordpress');
define('WP_SITEURL','http://example.com/somethingelse');
I have tried adding the following to my theme’s functions.php
update_option('siteurl','http://example.com/somethingelse');
update_option('home','http://example.com/wordpress');
I have even tried changing both the Site URL and the WordPress URL (checked it manually in the db to make sure it was correct) and changing the directory name to /somethingelse which gives me the white screen of death on every page.
I have tried disabling all plugins and redoing all of the above as well.
I am at a total loss as to what could be causing the errors as I can go over to my other WordPress installs on the same server and change their Site URL with out any problem.
Any help would be greatly appreciated before I run out of hair 😉
Thank you again!
Thank you in advance for any help you might provide. I have read many other posts, and unfortunately the provided solutions did not work.
The problem is this: I have WordPress installed in a supdirectory
http://www.example.com/wordpress and would like to change the front end url to http://www.example.com/somethingelse
When I go to Settings > General and change the Site Address (URL) to http://www.example.com/somethingelse and check the front end, for http://www.example.com/somethingelse, it returns a WordPress custom 404 page. The permalink structure is http://www.example.com/somethingelse/?p=123 and return a root 404 error.
I have made sure that the .htaccess is correct (although when I try to update permalinks with the new Site URL it says its not writable) and that the proper permissions are set.
Now, keeping http://www.example.com/somethingelse as the Site URL setting, if I go to the original http://www.example.com/wordpress, the home page works, though all links show this structure http://www.example.com/somethingelse/?p=123
I have tried adding the URL define to wp-config.php of
define('WP_HOME','http://example.com/wordpress');
define('WP_SITEURL','http://example.com/somethingelse');
I have tried adding the following to my theme’s functions.php
update_option('siteurl','http://example.com/somethingelse');
update_option('home','http://example.com/wordpress');
I have even tried changing both the Site URL and the WordPress URL (checked it manually in the db to make sure it was correct) and changing the directory name to /somethingelse which gives me the white screen of death on every page.
I have tried disabling all plugins and redoing all of the above as well.
I am at a total loss as to what could be causing the errors as I can go over to my other WordPress installs on the same server and change their Site URL with out any problem.
Any help would be greatly appreciated before I run out of hair 😉
Thank you again!
19 июня 2013
35 комментариев
Случается иногда такое что, имея большие функциональные возможности, wordpress вдруг выдает ошибку: Error 404 — Not Found. Порой незначительные изменения в настройках способны сделать сайт недоступным. Однако устранять неисправности и подобные ошибки в wordpress достаточно просто. В этой статье рассматривается вопрос: как исправить ошибку 404 (не найдено).
Обычно, при этой ошибке пользователь может попасть в админ панель и на главную страницу сайта, но при попытке открыть отдельный пост получает ошибку 404 — Not Found. При этом в большинстве случаев сам пост находится в сохранности и на своем месте. Обычно виной всему файл .htaccess, находящийся на веб-сервере. Чаще всего он расположен в корне, но может быть и в любом каталоге. Файл мог быть удален, либо он неверно сконфигурирован: имеет ошибочный синтаксис директив RewriteRule (записи в .htaccess). Вам необходимо это исправить.
Переходим в настройки (Permalinks) и просто нажимаем кнопку Сохранить изменения.

Этим действием вы обновите настройку постоянных ссылок и правила перезаписи. В большинстве случаев данным способом удается решить проблему ошибки 404 в wordpress, если это не помогает, то на файл .htaccess необходимо еще дать полные права.
Заходим через FTP на свой хостинг, находим файл .htaccess (находится там же, где расположены /wp-content/ и /wp-includes/) и изменяем его. Самое простое, это временно сделать файл записываемым, изменив разрешения на 666 и повторить рассмотренное действие в админ панели. Не забудьте после этого вернуть права файлу на 660. Еще один способ – вручную добавить в .htaccess этот код:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress Надеюсь, статья помогла вам устранить ошибку 404 в wordpress.