nginx 會對uri中的字符進行解碼然后傳遞給fastCGI,一般情況下也無妨,偏偏我的搜索詞中含有反斜杠,編碼后的地址
/search/Madmanfoo%2fLovesong/
nginx傳遞給php的地址就變成了,我用的PATHINFO所以無法得到正確的結果
/search/Madmanfoo/Lovesong/
把nginx官網找了個遍也沒找到阻止自動解碼的配置,實在不想二次編碼,從http://stackoverflow.com/questions/8264239/nginx-unescapes-2f-to-a-forward-slash-how-can-i-stop-it找到了一個類似的帖子,看樣只能二次編碼了,據說官方就是這么建議的。為了保持地址的美觀只對影響PATHINFO的反斜杠進行了二次編碼。
$keyword=urlencode($keyword);
$keyword=str_replace(array('%2F','%2f'),'%252F',$keyword);
如果有更好的解決辦法歡迎指正。