2011-11-30 51 views

回答

3

最終解決

RewriteRule ^dictionary/([^/.]+)$ /words.php?q=$1 [QSA,L] 
0

它更好地將字符串轉換爲默認的URL編碼機制。 AFAIK對網址#1的請求無法在沒有對網址進行編碼的情況下進行。 此外解碼將在服務器端完成,所以你不必擔心。 如果你正在使用一些框架或服務器端腳本,我會建議通過POST而不是得到pantalón

您可以使用jQuery後 http://api.jquery.com/jQuery.post/

如果你仍然想通過GET:

How to handle special characters in .htaccess rules?

另外要注意的是,網址,將得到的編碼。

+0

它必須通過GET來完成,因爲它必須是可訪問的URL。那麼,接受%和+字符的htaccess最適合什麼呢? – andufo

1

添加%的字符類表達式:

RewriteRule ^dictionary/([\w+%]{2,50})$ /words.php?q=$1 [QSA,L] 

或者你甚至可以用[^/]{2,50}

特殊(如[^A-Za-z0-9_])字符由客戶端根據請求進行編碼。請注意,åäö將變成9個字符,甚至一個單獨的å都會通過此表達式。如果你想允許50個特殊字符,使用{2,150}並在對字符串進行解碼(我猜是爲你自動完成)後檢查PHP代碼中的範圍的兩側。