【问题标题】:RewriteCond backreference not workingRewriteCond 反向引用不起作用
【发布时间】:2010-12-04 20:43:01
【问题描述】:

如果我去http://www.example.com,我希望它留在那里,这很好。
如果我转到http://bar.example.com,它会重定向到http://www..com,这是错误的
鉴于RewriteCond 中的反向引用,我想要它转到http://www.example.com

重写引擎开启 重写条件 %{HTTP_HOST} !^$ RewriteCond %{HTTP_HOST} !^www.(example).com [NC] 重写规则 ^(.*) http://www.%1.com/$1 [L,R]

Ubuntu 8.04
包:apache2-mpm-prefork
架构:i386
版本:2.2.8-1

【问题讨论】:

    标签: apache mod-rewrite backreference


    【解决方案1】:

    否定模式没有匹配项,因此您不能引用一组不存在的匹配项。

    但是试试这个规则:

    RewriteCond %{HTTP_HOST} !^$
    RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
    RewriteRule ^(.*) http://www.example.com/$1 [L,R=301]
    

    【讨论】:

    • 啊,否定模式。现在一切都说得通了。谢谢!
    【解决方案2】:

    您的条件与 bar.mysite.com 不匹配:

    RewriteCond %{HTTP_HOST}   !^www.(mysite).com [NC]
    

    您需要将其更改为匹配才能使反向引用正常工作:

    RewriteCond %{HTTP_HOST}   !^[^\.]+\.(mysite)\.com [NC]
    

    【讨论】:

      猜你喜欢
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 2013-04-06
      相关资源
      最近更新 更多