Назад | Перейти на главную страницу

Apache сообщает о статусе 200 для несуществующих URL-адресов WordPress

WordPress .htaccess обычно имеет следующие правила перезаписи:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Когда я получаю доступ к несуществующему URL-адресу на моем веб-сайте, это правило перезаписи срабатывает, перенаправляет на index.php, и обслуживает мой обычай 404.php файл шаблона. Код состояния, который отправляется обратно клиенту, является правильным 404, как показано в этом примере выходных данных HTTP Live Headers:

http://www.borngeek.com/nothere/

GET /nothere/ HTTP/1.1
Host: www.borngeek.com
{...}

HTTP/1.1 404 Not Found

Однако Apache сообщает обо всем обмене с кодом состояния 200 в моем журнале сервера, как показано здесь в фрагменте журнала (обрезанном для простоты):

{...} "GET /nothere/ HTTP/1.1" 200 2155 "-" {...}

Для меня это имеет смысл, поскольку исходный запрос был перенаправлен на существующую страницу (index.php). Есть ли способ заставить Apache сообщать об обмене как 404?

Моя проблема в том, что поддельные запросы, поступающие от Плохих Парней, отображаются как «успешные запросы» в различных программах статистики сервера, которые я использую (AWStats, Analog и т. Д.). Я бы хотел, чтобы они отображались на стороне Apache как 404, чтобы их отфильтровывали из создаваемых статистических отчетов.

Я попытался добавить следующую строку в свой .htaccess, но это не повлияло (я предполагаю, по той же причине, что и предыдущие правила перенаправления):

ErrorDocument 404 /index.php?error=404

Есть ли у кого-нибудь хитрый способ исправить это раздражение?

Дополнительная информация:

Попробуйте изменить [L] к [R=404,L] в строке RewriteRule. Это отправит 404 клиенту и вашему журналу сервера. Чтобы избежать отображения страницы ошибок по умолчанию, вы можете использовать ErrorDocument 404 /index.php?error=404 чтобы отобразить попытку ErrorDocument, которую, как вы сказали, вы пробовали раньше.

Вы также можете использовать Управление WP htaccess плагин, который поможет управлять вашими файлами htaccess при обновлении.

Если вы можете редактировать шаблон - вам повезло - в этом случае - отредактируйте его, чтобы вывести 404 или любой другой код. Поскольку apache ведет журнал (в большинстве случаев), отправляя PHP - эти коды состояния записываются в журнал в общих настройках (хотя и с множеством исключений).

Видеть http://php.net/manual/en/function.header.php

Dw.