2 回答

TA貢獻1835條經驗 獲得超7個贊
...在生產中并由于某種原因
/
在末尾添加了一個locations/
locations
如果作為文件系統上的物理目錄存在,就會發生這種情況。(或者存在并且響應被緩存。)
如果您請求/locations
并/locations
作為物理目錄存在,則 mod_dir 將發出 301 外部重定向以附加尾部斜杠 - 通常,這是“修復”URL 所必需的。
無論您的規則是否匹配*1 , mod_dir 都會發生這種外部“重定向” ,因為它“只是”內部重寫而不是另一個重定向。(*1事實上,它確實匹配并且重寫確實發生,但它被 mod_dir 重定向有效地覆蓋。)
您可以在您的模式中附加一個可選的斜杠,例如。- 但如果您請求的末尾沒有斜杠,重定向仍然會首先發生。您需要請求一個已包含尾部斜杠的 URL。RewriteRule
^locations/?$
/locations
您可以使用 來阻止 mod_dir 附加尾部斜杠DirectorySlash Off
,但是,這可能會對您的系統產生其他影響。
另請注意,由于這是 301(永久)重定向,因此您的瀏覽器可能會永久緩存它。因此,如果該/locations
目錄已在服務器上刪除,瀏覽器仍將重定向用戶,直到所有客戶端緩存也被清除。
兩臺服務器上的配置相同。
那么,兩臺服務器上都有(或曾經)有一個目錄嗎?/locations
如果兩臺服務器上的配置相同,那么您將得到相同的響應,因此一定存在一些差異。或者,存在客戶端緩存問題。
這樣如果用戶輸入
site.php/locations
我認為您的意思是site.com/locations
- 否則,您發布的指令沒有希望起作用,因為它們根本不匹配。
- 2 回答
- 0 關注
- 122 瀏覽
添加回答
舉報