2015-04-27 83 views
0

最近我使用了Apache RewriteEngine敘述(MOD重寫)試試這個文件重寫:使用此重寫規則發現錯誤

/api 

api.access.php 

到這個目錄

RewriteRule ^api$ api.access.php [L,QSA] 

但它保持失敗。

奇怪的是,與其他一些字符串如/apis更換/api工作。那麼問題是什麼?

回答

3

其實這不是一個真正的bug。 Apache很長一段時間都經過了很好的測試。什麼你可能運行到是content NegotiationMultiViews.這可能會導致一些有趣的業務。

所以你的答案真的不會幫助任何人,因爲更改文件名不是一個解決方案。您可能只需要禁用MultiViews

Options -MultiViews 
RewriteEngine on 
RewriteRule ^api/?$ api.access.php [L,QSA] 

更多關於MultiViews

多視圖的效果如下:如果服務器接收用於/一些/目錄/ foo的一個 請求時,如果/一些/目錄,使多視圖,和 /一些/目錄/ foo的不存在,則服務器會 尋找名爲foo文件的目錄。*,並有效假貨一個類型的地圖 這名所有這些文件,賦予它們不同的介質類型和 內容編碼如果客戶要求提供其中的一個,它就會有 他們的名字。然後它會選擇最符合客戶要求的 。

+0

謝謝!我不知道有關MultiViews – Frank

0

問題原來是我試圖替換的文件的名稱(api.access.php),因爲它以api開頭。

文件名更改爲access.api.php固定它。

希望這對任何人都有用。

乾杯