Когда включены ЧПУ, на отсутствующих (404) страницах заголовки 200ОК.
-
Здравствуйте!
Есть проблема с возвратом заголовков сервера 404 на отсутствующей странице.
С любой отсутствующей страницы сайта сервер отдаёт заголовок 200 ОК. При этом я попадаю на страницу «404 — Страница не найдена!», как и должно быть.
При этом, проблема наблюдается только когда ВКЛЮЧЕНЫ ЧПУ в WordPress, соответственно в htaccess ДОБАВЛЕН блок:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
При этом, если включить в настройках WP вид ссылок типа «site.ru/?p=123», соответственно, приведенный выше блок из htaccess удаляется, то сервер начинает выдавать корректно 404 на отсутствующие страницы. Но нужны ЧПУ.
Я пробовал всё удалять из htaccess, оставляя только блок приведенный выше, отключать все плагины и даже устанавливать специальный плагин для 404 страницы (404page — your smart custom 404 error page), который позволяет назначить отдельную страницу, как 404. Назначенная страница выводится, но сервер упорно не отдает заголовок 404, пока этот код в htaccess присутствует и включены ЧПУ.
При чём, даже если не отключая ЧПУ, просто удалить htaccess, в котором только этот блок кода, то 404 начинает отдаваться корректно. Но тогда, понятно, ссылки не работают, пока не включишь базовые (?p=123).
Я уже все форумы выкурил и сайты с описанием подобной проблемы. В основном встречается проблема обратная, которая лечится включением ЧПУ и добавлением этого когда в htaccess. У меня же корректно 404 выдаёт только при выключенном ЧПУ.
Я и всякие костыли пробовал:
ErrorDocument 404 /404.html
в htaccess, создавая в корне 404.html — не работает.И подобное в 404.php и для эксперимента в header.php:
<?php header ("HTTP/1.1 404 Not Found"); ?>
Всё равно всегда 200ОК — на любую несуществующую страницу.
Стоят плагины:
Simple Lightbox
Google XML Sitemaps
Contact Form 7
All In One WP Security
All In One SEO Pack
Akismet Anti-Spam
ну и уже потом появился «404page — your smart custom 404 error page».У меня три вопроса:
1. Куда копать?
Дополнительные:
2. Отключение плагинов равно их удалению? То есть, если я их отключил, могу ли я считать, что они не участвуют в жизни WP?
3. Удаление плагина — точно не оставляет от него следов? Особенно такого, как All In One WP Security?Заранее спасибо за помощь!
PS Даже хостеру написал — безрезультатно. Ответили:
Для работы ЧПУ в .htaccess необходимы директивы вида:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
Данные директивы перенаправляют все запросы на файл index.php, при включенному ЧПУ адрес запроса обрабатывается средствами скриптов. В данном случае также и ошибка 404 должна отдаваться скриптами сайта, для настройки вам лучше всего обращаться к разработчику.
- Тема «Когда включены ЧПУ, на отсутствующих (404) страницах заголовки 200ОК.» закрыта для новых ответов.