При установке WordPress я хочу немедленно вернуть 404 (без вспомогательной страницы) за отсутствующие статические ресурсы, но директивы, похоже, конфликтуют.
Можете ли вы помочь мне разобраться в решении проблемы?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(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)$ [nocase,redirect=404,last]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{HTTP:Cookie} !^.*(wordpress_logged_in).*$
RewriteCond %{REQUEST_URI} !^/wp-content/cache/swift-performance/([^/]*)/assetproxy
RewriteCond /home/217146.cloudwaysapps.com/ssytsarbtn/public_html/wp-content/cache/swift-performance/%{HTTP_HOST}%{REQUEST_URI}/desktop/unauthenticated/index.html -f
RewriteRule (.*) wp-content/cache/swift-performance/%{HTTP_HOST}%{REQUEST_URI}/desktop/unauthenticated/index.html [L]
</IfModule>
# 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
RewriteRule \.(css|js|html|htm|...<etc>...|zip)$ [nocase,redirect=404,last]
Вам не хватает подмена (второй) аргумент по поводу RewriteRule
. Это приведет к переписыванию запроса на [nocase,redirect=404,last]
(бессмысленный URL-адрес), который будет перенаправлен через WordPress, и в конечном итоге WordPress сгенерирует 404 (это то, что, как я полагаю, вы имеете в виду, когда говорите «страница вежливости»).
Он должен иметь вид:
RewriteRule \.(css|js|html|htm|...<etc>...|zip)$ - [nocase,redirect=404,last]
Обратите внимание на дополнительный дефис (-
) в качестве второго аргумента перед флаги (третий аргумент).
ОБНОВИТЬ: Когда вы указываете не-3xx статус с R
флаг, строка замены все равно игнорируется. Однако -
(дефис) явно указывает "без замены". Из документов Apache:
-
(прочерк) Прочерк означает, что замену выполнять не следует (существующий путь проходит без изменений). Это используется, когда необходимо применить флаг (см. Ниже) без изменения пути.
(В документации это называется "тире", хотя это строго дефис.)