Dot-Htaccess

.htaccess 指令之間的優先級 - 為缺少靜態資源返回 404

  • February 13, 2019

在 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),該 URL 將通過 WordPress 進行路由,最終 WordPress 將生成 404(當你說“禮貌頁面”時,我假設你指的是這個)。

它應該是以下形式:

RewriteRule \.(css|js|html|htm|...<etc>...|zip)$ - [nocase,redirect=404,last]

注意附加的連字元 ( -) 作為第二個參數,在標誌(第三個參數)之前。

更新:R當您使用標誌指定非 3xx 狀態時,無論如何都會忽略*替換字元串。*但是,-(連字元)明確表示“無替換”。來自 Apache 文件

-(破折號)破折號表示不應執行替換(現有路徑通過未觸及)。當需要在不更改路徑的情況下應用標誌(見下文)時使用此選項。

(文件將其稱為“破折號”,儘管它嚴格來說是一個連字元。)

引用自:https://serverfault.com/questions/940346