Итак, всякий раз, когда пользователь пытается получить файл на моем сервере Apache, которого не существует, я получаю строку 404 в журнале доступа:
[29/Sep/2010:12:14:45 +0200] "GET /asdf HTTP/1.1" 404
И я также получаю это в журнале ошибок:
[Wed Sep 29 12:14:45 2010] [error] [client] File does not exist: /www/site/asdf
Есть ли способ подавить отображение ошибки 404 в журнале ошибок - только в журнале доступа?
ErrogLog (http://httpd.apache.org/docs/2.2/mod/core.html#errorlog) не условно. Вы можете отправить журналы в системный журнал или сценарий и отфильтровать их.
Да, ты можешь исключить их из журнала ошибок, но оставить их в журнале доступа. Просто добавьте эти строки в .htaccess:
# Don't log missing files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(content\asdf)$ - [R=404,L]
Он использует mod_rewrite.
RewriteCond нужен, чтобы убедиться, что этот файл действительно не существует. Существующие файлы будут обслуживаться как обычно.
R = 404 сообщает об отправке кода состояния 404 Not Found, когда клиент обращается к любым файлам, содержащим asdf. Вам необходимо изменить выражение в скобках в последней строке в соответствии с вашими потребностями.
Этот ответ тоже есть Вот.
Попробуйте поэкспериментировать с директивой LogLevel (http://httpd.apache.org/docs/current/mod/core.html#loglevel). Это не совсем то, что вам нужно, но тем не менее может удовлетворить ваши потребности.
Ошибка 404 определяется в httpd.conf или .htacces следующим образом:
ErrorDocument 404 /404.html
Вы можете перенаправить на страницу индекса:
ErrorDocument 404 /index.html
или вы можете создать пустую страницу blank.html и изменить конфигурацию на: ErrorDocument 404 /blank.html