2009-08-20 116 views
1

任何人都可以發現這個URL重寫有什麼問題嗎?我不能讓它通過什麼就(腳本加載,但沒有傳遞參數):這個mod_rewrite規則有什麼問題?

RewriteRule ^archive(/(.*))?$ archive.php?action=$1 [QSA,L] 

我要地圖「歸檔/瀏覽/」到「?archive.php行動=瀏覽」 。

+0

你爲什麼接受茶茶的答案嗎?我以爲你不能得到任何傳遞給'$ _GET'的東西? – Gumbo 2009-08-26 04:10:59

+0

因爲它解決了大多數需要我想要的結果的情況(儘管不是我的具體情況)。通過接受它,具有類似目標的其他用戶將更容易找到最可能的解決方案。 這是目前最好的答案,但如果找到更有效的解決方案,我將樂意切換並接受不同的答案。 – Wilco 2009-08-26 17:24:38

回答

1
RewriteEngine On 
RewriteRule ^archive/(.*)$ archive.php?action=$1 [QSA,L] 

會改寫後什麼/archive/archive.php?action=test/dir/path

0
RewriteRule ^archive/([^/]*) archive.php?action=$1 [QSA,L]
3

當啓用MultiViews時,可能會發生一些衝突。如果啓用,Apache首先會嘗試查找具有相似名稱的文件,以在將請求傳遞到mod_rewrite之前映射該請求。因此/archive/browse/的請求以/archive.php/browse/結尾,然後mod_rewrite會將其映射到您的/archive.php?action=browse

嘗試使用禁用它:

Options -MultiViews 
+0

內部組仍然是1美元? – 2009-08-20 22:12:14

+0

雖然沒有任何通過,你的場景更有意義 – 2009-08-20 22:15:07

+0

@Vinko Vrsalovic:該選項不會改變任何有關mod_rewrite。它只是停止Apache尋找類似的命名文件。另一種解決方案是重命名文件,如果MultiViews真的是這種行爲的原因。 – Gumbo 2009-08-20 22:17:05