最近我使用了Apache RewriteEngine敘述(MOD重寫)試試這個文件重寫:使用此重寫規則發現錯誤
/api
:
api.access.php
到這個目錄
RewriteRule ^api$ api.access.php [L,QSA]
但它保持失敗。
奇怪的是,與其他一些字符串如/apis
更換/api
工作。那麼問題是什麼?
最近我使用了Apache RewriteEngine敘述(MOD重寫)試試這個文件重寫:使用此重寫規則發現錯誤
/api
:
api.access.php
到這個目錄
RewriteRule ^api$ api.access.php [L,QSA]
但它保持失敗。
奇怪的是,與其他一些字符串如/apis
更換/api
工作。那麼問題是什麼?
其實這不是一個真正的bug。 Apache很長一段時間都經過了很好的測試。什麼你可能運行到是content Negotiation
和MultiViews.
這可能會導致一些有趣的業務。
所以你的答案真的不會幫助任何人,因爲更改文件名不是一個解決方案。您可能只需要禁用MultiViews
。
Options -MultiViews
RewriteEngine on
RewriteRule ^api/?$ api.access.php [L,QSA]
更多關於MultiViews
多視圖的效果如下:如果服務器接收用於/一些/目錄/ foo的一個 請求時,如果/一些/目錄,使多視圖,和 /一些/目錄/ foo的不存在,則服務器會 尋找名爲foo文件的目錄。*,並有效假貨一個類型的地圖 這名所有這些文件,賦予它們不同的介質類型和 內容編碼如果客戶要求提供其中的一個,它就會有 他們的名字。然後它會選擇最符合客戶要求的 。
問題原來是我試圖替換的文件的名稱(api.access.php
),因爲它以api
開頭。
文件名更改爲access.api.php
固定它。
希望這對任何人都有用。
乾杯
謝謝!我不知道有關MultiViews – Frank