Apache-2.4

不確定這組 .htaccess 規則在做什麼

  • June 24, 2017

我繼承了一個 Web 應用程序,其中包含以下一組 .htaccess 規則。在我看來,他們什麼都不做。有人可以解釋他們在做什麼嗎?

對我來說,看起來他們只匹配到站點根目錄,檢查目錄是否不存在(!),然後 301 重定向到站點根目錄。

RewriteCond %{REQUEST_URI} /$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]

只是為了添加 OverCoder 的答案…如前所述,此程式碼刪除了 URL 末尾的斜杠(目錄除外)…

RewriteCond %{REQUEST_URI} /$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]

不過RewriteCond這裡的第一個指令確實是多餘的,可以去掉。這只是檢查 URL 是否以斜杠結尾,這是RewriteRule 模式(即^(.+)/$)已經建立的。

第二個RewriteCond指令確保我們不請求目錄。目錄需要尾部斜杠。預設情況下,如果您請求沒有的目錄,mod_dir 將附加一個斜杠。因此,如果您隨後使用 mod_rewrite 刪除了目錄上的尾部斜杠,那麼您可能會創建一個重定向循環。

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