2014-09-20 86 views
1

我使用與現有目錄同名的乾淨路徑。Apache將尾部斜槓附加到我的重寫規則中

我使用這些規則的.htaccess支持清潔路徑的路徑:

RewriteCond ${REQUEST_URI} ^/mydir 
RewriteCond ${REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 

一切工作正常(我有一個「MYDIR」清潔路徑工作,我可以在/ mydir目錄直接訪問現有文件),但是apache會一直附加斜線來請求。 我要求http://domain.com/mydir,它會將我301重定向到http://domain.com/mydir/

是什麼原因?

回答

0

。這是由於此設置默認開啓:

DirectorySlash On 

可以使用關閉它:

DirectorySlash Off 

但是它可能會通過展示自己的物品暴露一些目錄。

Security Warning

關閉尾隨斜線重定向可能會導致信息 披露。考慮其中mod_autoindex活躍 (選項+索引)和DirectoryIndex的設置爲一個有效的資源(比如, 的index.html),並有該URL定義沒有其他特殊的處理程序。 在這種情況下,帶有斜線的請求將顯示index.html 文件。但沒有斜槓的請求將列出目錄 的內容。

0

Apache的正確的URL總是以一個斜線/結束。因爲它將URL看作是磁盤文件路徑(始終以斜槓結尾)。如果不存在,服務器需要額外增加一個步驟來進行內部添加。我說讓它成爲。

加谷歌(據說)喜歡尾隨斜線。

我說保持原樣。

請閱讀更多:http://cdivilly.wordpress.com/2014/03/11/why-trailing-slashes-on-uris-are-important/

這裏:/mydir/被稱爲mod_dir一個Apache模塊,所有的目錄後增加了一個結尾斜槓添加尾隨斜線後http://bit.ly/1uSvbfy :)

+0

我使用Drupal和所有自動生成的路徑沒有尾隨斜線。問題在於這個,由於斜線後面的原因在ajax請求中導致了一些奇怪的問題。 – murphy 2014-09-20 20:53:42

+0

您的評論確實是一個完全不同的問題:)但是,雖然瀏覽器不顯示它,但尾部的斜槓始終是'301'ed – 2014-09-20 20:55:33