【问题标题】:validating utf-8 in htaccess rewrite rule在 htaccess 重写规则中验证 utf-8
【发布时间】:2010-04-02 09:10:39
【问题描述】:

我使用重写规则验证带有 utf-8 字符的网址

RewriteRule ^([a-z]{2})/([a-z0-9-]{1,256})/([[:print:]]{1,256})$ index.php?language=$1&categories= $2&get_query=$3 [L]

$get_query 是重点,它接受:test!?!'"*+ 但重音字符如 àèéìòù 或其他 utf-8 失败

例如在 wikipedia 中这很有效:http://en.wikipedia.org/wiki/%E6%B1%89%E8%AF%AD_%E6%BC%A2%E8%AA%9E

有什么帮助吗? :-)

【问题讨论】:

    标签: apache .htaccess mod-rewrite utf-8


    【解决方案1】:

    :print:[\x20-\x7E] 所以不包括非 ASCII 字符。如果你想允许任何事情,为什么不只是.*,或者[^/]*

    【讨论】:

    • .* 对我不起作用,也不适用于 [^/]* (任意数量的非斜杠)对吗?我真的只想匹配 alpha 连字符和下划线,但 alpha 需要包含重音和变音符号等。还有什么更具歧视性的吗?
    • @tixrus:如果您有 Unicode 无知的正则表达式实现,则无法区分不同的非 ASCII 字符,但您当然可以允许所有非 ASCII 字符,例如。通过使用排除字符组,例如 [^\x00-,.-@[-^`{-\x7F]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多