3

我的 htaccess 重写必须处理这些场景:

我当前的 .htaccess 配置是:

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

它无法识别特殊字符,例如:ñ、ó。

有任何想法吗?谢谢!

4

3 回答 3

5

最终解决方案

RewriteRule ^dictionary/([^/.]+)$ /words.php?q=$1 [QSA,L]
于 2011-12-06T17:54:09.360 回答
1

将 a 添加%到表达式中的字符类:

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

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

特殊(类似[^A-Za-z0-9_])字符由客户端根据要求进行编码。请注意,åäö它将变成 9 个字符,甚至单个字符å也会通过此表达式。如果您想允许 50 个特殊字符,{2,150}请在解码字符串后使用并检查 PHP 代码中范围的两侧(我猜这是自动为您完成的)。

于 2011-11-30T08:10:45.637 回答
0

最好将字符串转换为默认的 url 编码机制。如果不对 url 进行编码,就无法向 url#1 发出请求。此外,解码将在服务器端完成,因此您不必担心。如果您使用的是某些框架或服务器端脚本,我建议您通过 pantalónviaPOST而不是 get。

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

如果您仍想通过 GET :

如何处理 .htaccess 规则中的特殊字符?

另请注意,URL 将被编码。

于 2011-11-30T05:44:04.060 回答