.htaccess приоритет между директивами - вернуть 404 для отсутствующих статических ресурсов

При установке 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
1
задан 14 February 2019 в 00:58
1 ответ
 RewriteRule \. (Css | js | html | htm | ...  ... | 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 :

- (тире) Прочерк означает, что замену выполнять не следует (существующий путь проходит без изменений). Это используется, когда необходимо применить флаг (см. Ниже) без изменения пути.

(В документах это называется «тире», хотя это строго дефис .)

2
ответ дан 3 December 2019 в 20:11

Теги

Похожие вопросы