2013-07-28 42 views
3

我只注意到這個最近..htaccess的下落基地64個編碼的網址符號

我使用進行urlencode上base64編碼發送整個URL的加密圖像的鏈接,所以也有少數%2B的IE + url中的符號。

當我通過GET在PHP

image.php?q={encoded} 

訪問的URL,當我做$ _GET [ 'Q']我得到正確的數據,而不urldecoding它,即%2B將被翻譯爲+等....

,但我最近寫了一htaccess的做這樣

RewriteRule ^image/(.*)?$ image.php?q=$1 [NC,L] 

,當我訪問$ _GET [「q」]的數據... ...所有%2B的已經被替換爲空格等....所以我需要運行

str_replace(' ','+',$_GET['q']) 

,然後解密獲得的圖像鏈接..

任何想法,爲什麼會這樣?......我需要設置一些默認的標準htaccess的左右?任何幫助表示讚賞的傢伙。

回答

1

重寫規則將使用Percent-Escape-Sequences對URL進行解碼,並將解碼後的字符串再次放入查詢字符串中,「%2B」現在爲「+」,PHP將其解碼爲「」(空間)。

的mod_rewrite有這樣的標誌:B

請參閱該文檔:http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_b