2014-09-25 21 views
1

我使用mod_rewrite收拾我的網址mod_rewrite的未映網址正確

有一個規則轉換爲以下幾點:

RewriteEngine On 
RewriteRule ^search/([^/]*)/([^/]*)$   /search?type=$1&query=$2 [L] 

/search?type=title&query=me 
/search/title/me 

然而,這並不工作,當我去上述網址/search/title/me我不能得到的參數typequery

如果我改變重寫規則

RewriteRule ^search2/([^/]*)/([^/]*)$   /search?type=$1&query=$2 [L] 

它工作正常,我能夠得到所有的參數。 我不明白這是如何發生的。

請幫助我!

回答

1

這是由於MultiViews選項。選項MultiViewsApache's content negotiation module使用,它在mod_rewrite之前運行,並且使Apache服務器匹配文件擴展名。所以/file可以在URL中,但它將服務/file.php

通過這條線在你的.htaccess開始禁用它:

Options -MultiViews 
+0

我加入這個在.htaccess文件的開始,現在我得到找不到網頁錯誤 – 2014-09-25 18:38:10

+0

這是唯一的規則' RewriteRule^search /([^ /] *)/([^ /] *)$/search?type = $ 1&query = $ 2 [L]'?並且是'/ search /'目錄? – anubhava 2014-09-25 18:40:21

+0

這是唯一的規則,我只有3行在.htaccess文件,並沒有文件夾被稱爲搜索 – 2014-09-25 18:43:18