2011-03-15 33 views
1

即使在URL符號後剝去我傳遞一個URL&符號,其進入的GET請求數據被使用進行urlencode

例如

http://www.soundshelter.co.uk/label/Hit & Run 

我試圖來urlencode的&所以,這是一個有效的URL

http://www.soundshelter.co.uk/label/Hit%20%26%20Run 

但URL的& Run部分獲取請求被切斷。

我想這可能是與我的mod_rewrite

RewriteRule ^label/([^/]*)$ /index.php?label=$1 [NC] 

的GET請求

$label = $_GET['label']; 

任何想法?

乾杯

+0

http://www.soundshelter.co.uk/label/ 2011-03-15 19:32:51

回答

3

the documentation

'B'(逸出反向引用)

Apache在其映射之前取消轉義網址,因此反向引用將 在它們 時被轉義應用。使用B標誌, 反向引用中的非字母數字字符 將被轉義。對於 例如,請考慮以下規則:

RewriteRule ^(.*)$ index.php?show=$1 

這將映射到/C++index.php?show=/C++。但它也將 地圖/C%2b%2bindex.php?show=/C++, 因爲%2b已經轉義。 使用B標誌,它將改爲將 映射到index.php?show=/C%2b%2b

這轉義尤其需要在代理的情況下,當 如果呈現 與轉義URL後端可能會斷裂。

所以,儘量:

RewriteRule ^label/([^/]*)$ /index.php?label=$1 [BNC] 

此外,在經歷到您的網頁,它看起來像你對我有進一步的PHP的問題。我建議你發佈更多的代碼上下文。

+0

嗨夥計,該感謝。這是引起內部服務器錯誤。有任何想法嗎?還有什麼部分的代碼,你需要看到進一步的PHP問題?歡呼你的幫助 – Franco 2011-03-16 09:05:49

+0

(a)看看你的服務器錯誤日誌。(b)製作一個測試用例:一個最小的完整的代碼頁面,它僅顯示問題,但也不包含無關的bumpf。 – 2011-03-16 10:27:50

+0

解決了我的問題。謝謝! – xZero 2015-06-10 14:32:40

1

試着改變你的重寫規則

RewriteRule ^label/([^/]*)$ /index.php?label=$0 [NC]