Попробуйте, просто обновить «постоянные ссылки»… была такая тема у меня на nic.ru хостинге… решилась именно таким способом.
Да, в корневом .htaccess была вот такая хитрая штука:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^login/?$ /wp-login.php?44w4ul6nfblzx1v0penxu [R,L]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^admin/?$ /wp-login.php?44w4ul6nfblzx1v0penxu&redirect_to=/wp-admin/ [R,L]
RewriteRule ^admin/?$ /wp-admin/?44w4ul6nfblzx1v0penxu [R,L]
RewriteRule ^register/?$ /wp-login.php?44w4ul6nfblzx1v0penxu&action=register [R,L]
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)domain.com/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)domain.com/wp-login\.php
RewriteCond %{HTTP_REFERER} !^(.*)domain.com/login
RewriteCond %{HTTP_REFERER} !^(.*)domain.com/admin
RewriteCond %{HTTP_REFERER} !^(.*)domain.com/register
RewriteCond %{QUERY_STRING} !^44w4ul6nfblzx1v0penxu
RewriteCond %{QUERY_STRING} !^action=logout
RewriteCond %{QUERY_STRING} !^action=rp
RewriteCond %{QUERY_STRING} !^action=register
RewriteCond %{QUERY_STRING} !^action=postpass
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^.*wp-admin/?|^.*wp-login\.php /not_found [R,L]
RewriteCond %{QUERY_STRING} ^loggedout=true
RewriteRule ^.*$ /wp-login.php?44w4ul6nfblzx1v0penxu [R,L]
</IfModule>
Что за бред? Исправили? Проблема решилась?
Да, в корневом .htaccess была вот такая хитрая штука
Такие правила создаёт плагин iThemes Security (Better WP Security).
Если это всё содержимое файла, то в нём не хватает правил самого WordPress.
Неа. Отключил ithemes secturity, но постоянные ссылки все равно не работают.
Может быть дело в том, что посты как-то хитро сделаны?
Вот секция вордпресса, которая была в изначальном файле:
# 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
Ага, кажется проблема не в апаче, а в nginx’е. Пытаюсь найти правила для него, дабы нормально отрабатывался реврайт.
if (!-e $request_filename) {
rewrite ^.+/?(/wp-.*) $1 last;
rewrite ^.+/?(/.*\.php)$ $1 last;
rewrite ^(.+)$ /index.php?q=$1 last;
}
Такой код не приводит к 404, но открывается просто та же главная страница.
Вот оно!
error_page 404 = //index.php?q=$uri;
Все остальные варианты, приведенные в инете — полная лажа.