【问题标题】:mod_rewrite - old parameter name to new namemod_rewrite - 旧参数名称到新名称
【发布时间】:2010-10-08 20:22:48
【问题描述】:

大家好,我需要一些在 mod_rewrite 中工作的重定向。

我需要重定向以下内容

http://mysite.com/dictionary/find?word=test

http://mysite.com/dictionary/find?w=test

我确信解决方案足够简单,但我对 mod_rewrite 和正则表达式的了解非常有限,而且我无法解决。这是我迄今为止尝试的无济于事。

RewriteCond %{QUERY_STRING} word= [NC]
RewriteRule ^/(.*)word=(\w+)/$ /w=$1 [L]

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: mod-rewrite parameters


    【解决方案1】:

    试试这个:

    RewriteCond %{QUERY_STRING} ^(([^&]*&)*)word=(.*)
    RewriteRule ^dictionary/find$ $0?%1w=%3 [R=301,L]
    

    【讨论】:

      【解决方案2】:

      这对你来说应该足够了......

      重写规则 (?|&)word=(\w+) $1w=$2

      即使与其他参数结合使用,它也会替换它。您尝试只处理查询字符串很有趣,我从未使用过,并且无法回答是否可能。

      作为旁注,打开:

      重写日志“/var/log/apache2/rewrite.log”
      重写日志级别 2

      获取更多有用的反馈。

      【讨论】:

      • 感谢您的帮助 jishi 我已经尝试了您的 RewriteRule,但尝试使用它启动 Apache 时出现以下错误 RewriteRule: cannot compile regular expression '(?|&)word=(\ \w+)' 额外的反斜杠不是我的错误,它只是这样打印出来的。
      • 我很清楚完整的错误是:/data/home/user/web/conf/rewrite.conf 的第 2 行语法错误:RewriteRule:无法编译正则表达式 '(?| &)query=(\\w+)'
      • hm 你可能需要转义 ?, (\?|&)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 2012-05-04
      • 2016-12-23
      • 2010-10-06
      相关资源
      最近更新 更多