我的htaccess重写必须处理这些情况:
我目前的.htaccess配置是:
RewriteRule ^dictionary/([\w\+]{2,50})$ /words.php?q=$1 [QSA,L]
它不承认特殊的字符,例如:ñ,ó。
有什么想法吗?谢谢!
答案 0 :(得分:4)
最终解决方案
RewriteRule ^dictionary/([^/.]+)$ /words.php?q=$1 [QSA,L]
答案 1 :(得分:1)
在表达式中的字符类中添加%
:
RewriteRule ^dictionary/([\w+%]{2,50})$ /words.php?q=$1 [QSA,L]
或者您甚至可以使用[^/]{2,50}
。
特殊(类似[^A-Za-z0-9_]
)个字符由客户端根据请求进行编码。请注意,åäö
将变为9个字符,甚至单个å
也会通过此表达式。如果你想允许50个特殊字符,请使用{2,150}
并在解码字符串后检查PHP代码范围的两侧(我想这是自动完成的)。
答案 2 :(得分:0)
最好将字符串转换为默认的url编码机制。
如果没有对url进行编码,则无法对AFAIK发出对URL#1的请求。
此外,解码将在服务器端完成,因此您无需担心。
如果您使用的是某些框架或服务器端脚本,我建议您通过pantalón
通过POST
而不是获取。
您可以使用jquery帖子 http://api.jquery.com/jQuery.post/
如果你还想通过GET:
How to handle special characters in .htaccess rules?
另请注意,网址将被编码。