【问题标题】:Htaccess RewriteRule to accept special charactersHtaccess RewriteRule 接受特殊字符
【发布时间】:2011-11-30 05:37:19
【问题描述】:

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

我当前的 .htaccess 配置是:

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

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

有什么想法吗?谢谢!

【问题讨论】:

    标签: regex .htaccess alphabetical


    【解决方案1】:

    最终解决方案

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        如果你还想通过 GET :

        How to handle special characters in .htaccess rules?

        还要注意 URL 会被编码。

        【讨论】:

        • 它必须通过 GET 完成,因为它必须是可访问的 url。那么,对于 htaccess 来说,接受 % 和 + 字符的最佳方法是什么?
        猜你喜欢
        • 2018-02-07
        • 1970-01-01
        • 2022-06-17
        • 1970-01-01
        • 1970-01-01
        • 2021-10-31
        • 2013-07-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多