【问题标题】:encode url using htaccess使用 htaccess 对 url 进行编码
【发布时间】:2014-05-27 16:43:24
【问题描述】:

我正在尝试转换

www.domain.com/tag/c++  --> www.domain.com/index.php?qa=tag&qa_1=c++

我使用这个代码:

RewriteRule ^(.*)/(.*)/?$ /index.php?qa=$1&qa_1=$2 [R=301,L]

但它会将页面重定向到 c 标签,因为为了正常工作它必须先将其转换为 %2B%2B

这个页面也重定向错了:

www.domain.com/tag/c%2B%2B

我也使用此代码重定向用户页面,它们有一些字符,如 / 空格和 ...

htaccess 做这些事情的最佳方法是什么?

【问题讨论】:

  • &qa_1=c++ 表示qa_l = 'c '
  • @Emissary 我试过了,但它把它转换成 c%252B%252‌B 我想要 c%2B%2B
  • @hjpotter92 我知道这就是我问这个问题的原因:)
  • @Emissary 而且它也破坏了 urf8 字符。

标签: php regex .htaccess http-status-code-301


【解决方案1】:

添加NE 标志应该可以做到。它将停止对特殊字符进行编码。

默认情况下,特殊字符,例如 & 和? 转换为等效的十六进制代码。使用 [NE] 标志可防止 这不会发生。

RewriteRule ^(.*)/(.*)/?$ /index.php?qa=$1&qa_1=$2 [R=301,L,NE]

它应该允许您访问www.domain.com/tag/c++ www.domain.com/index.php?qa=tag&qa_1=c++

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 2012-01-27
    • 2012-08-26
    • 1970-01-01
    • 2018-06-30
    相关资源
    最近更新 更多