.htaccess пропустить обработку ошибок WordPress 404 для статических файлов .
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(robots\.txt|sitemap\.xml(\.gz)?)
RewriteCond %{REQUEST_FILENAME} \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ [NC]
RewriteRule .* - [L]
</IfModule>
Примечание: эти правила были сгенерированы плагином W3 Total Cache *
Nginx пропускает обработку WordPress 404 для статических файлов.
if (-f $request_filename) {
break;
}
if (-d $request_filename) {
break;
}
if ($request_uri ~ "(robots\.txt|sitemap\.xml(\.gz)?)") {
break;
}
if ($request_uri ~* \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$) {
return 404;
}
Я не уверен, что это возможно. Если вы посмотрите на код htaccess, который WordPress создает при включении постоянных ссылок, он в основном говорит: «Если файл / каталог не найден, отправьте его в index.php». Это включает в себя все фактические 404 запроса. Помимо создания списка всех динамически генерируемых общедоступных ресурсов, о которых знает WordPress, и прямой вставки этого в .htaccess, вам потребуется загрузить php для обработки 404-х.
источник
Мне понравилась идея Chris_O , но я сделал свою версию, которая более безопасна.
Итак, что я сделал, я просто добавил папки в исключение, поэтому, если ваши запросы начинаются с этих строк - это определенно не является действительной постоянной ссылкой. Большинство запросов поступают от ботов, которые пытаются проверить содержимое этих папок на наличие эксплойтов. Они будут эффективно отфильтрованы, и при необходимости вы можете отобразить небольшую статическую страницу 404.
Другие запросы по-прежнему будут обрабатываться WordPress, и если кто-то введет неправильный адрес, он отобразит сообщение дружественного пользователя не найден в вашем шаблоне. Решение Chris_O будет работать только для запросов, которые выглядят как расширения файлов, в противном случае они также будут обрабатываться WordPress.
Чтобы сделать его еще более надежным, вы можете получить исходный файл доступа и выполнить поиск ошибок 404. Если вы заметили много запросов, начинающихся с определенных строк, вы также можете включить их в этот фильтр:
источник
У меня на сайте установлено несколько CMS, поэтому я использую что-то подобное, чтобы использовать одну и ту же страницу ошибки 404 для всех CMS. Я использую этот конф для Nginx + FastCgi, и он работает нормально:
Я использую этот конфиг вместе с этим в php.ini:
WordPress устанавливается следующим образом http://example.com/wordpress/ . 404.html находится в корне http://example.com/ .
PS Не забывайте, что службы PHP и Nginx необходимо перезапустить после внесения изменений в файлы php.ini или nginx.conf, чтобы изменения вступили в силу.
источник
Есть 3 способа сделать это
Полный учебник - (ссылка не работает и перенаправлена на спам)
источник