Htaccess RewriteRule接受特殊字符

时间:2011-11-30 05:37:20

标签: regex .htaccess alphabetical

我的htaccess重写必须处理这些情况:

我目前的.htaccess配置是:

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

它不承认特殊的字符,例如:ñ,ó。

有什么想法吗?谢谢!

3 个答案:

答案 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?

另请注意,网址将被编码。