2011-12-11 38 views
12

我遇到了get參數和htaccess重寫規則一起使用的問題。 下面是urlencode()'ed鏈接;我用來重定向到index.php的重寫規則,最後是index.php上的print_r($ _ GET)。 正如您所看到的,urlescaped&符不是變量static的值的一部分,而是與我的期望相反,被解釋爲變量分隔符。 爲什麼?

初始鏈接:

<a href="static/Game-Tech-%26-Arts-Lab">link</a> 

的.htaccess:

RewriteRule ^static/(.*)$ /index.php?static=$1 [L] 

的index.php:

Array ([static] => Game-Tech- [-Arts-Lab] =>) 
+0

怎麼了'$ _ SERVER [ 「QUERY_STRING」]'尋找這一要求?當你手動調用'index.php?static = ...'時,重寫不會發生嗎? – mario

+0

手動瀏覽到「index.php?static = Game-Tech-%26-Arts-Lab」顯示頁面很好 - $ _SERVER [「QUERY_STRING」]顯示爲「[QUERY_STRING] => static = Game-Tech-& -Arts-Lab「 – kontur

回答

23

嗯,還好。有趣。似乎有一個特殊的解決方案,以保持特殊的字符逃脫。使用[B] flag for Rewriterules

RewriteRule ^static/(.*)$ /index.php?static=$1 [L,B] 

這應該插在$1佔位符的時候來urlencode特殊字符。它只適用於Apache 2.2,但我相信。

發現了幾個參考:

+0

哦,那是新聞!這只是修復它。我將不得不再次學習這些重寫標誌 - 感謝您的幫助mario! – kontur

+0

不知道那個。這是新的。 – mario

+0

太棒了 - 謝謝你! – Simeon