【问题标题】:Permanent redirect via apache rewrite rules通过 apache 重写规则永久重定向
【发布时间】:2011-07-30 01:35:06
【问题描述】:

我正在尝试编写一个规则来永久地将一个域名重定向到另一个域名

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

这只有在用户记得输入 www 时才有效,如果用户没有在 url 中输入 www,页面将加载但图片链接将被破坏。

有谁知道如何调整上述规则以使其在有和没有 www 的情况下都适用?

我正在使用 LAMP 配置,redhat 上的 apache 2。

【问题讨论】:

    标签: apache mod-rewrite redirect


    【解决方案1】:

    您可以使用 [OR] 提供几个可选的重写条件:

    RewriteCond %{HTTP_HOST} ^www.companyname1.com$ [OR]
    RewriteCond %{HTTP_HOST} ^companyname1.com$
    RewriteRule ^(.*)$ http://www.companyname2.com/$1 [R=301,L]
    

    这应该可以解决问题。第一个 Rewrite-Condition 触发,如果 www 存在,第二个触发,如果 www 被忘记了。

    【讨论】:

    【解决方案2】:

    重定向对我不起作用,我不得不对其进行调整,下面是基于@Demento 回答的工作版本。

    # Parmenent redirect to webdesign.danols.com of all pages
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www.kingston-web-design.com [OR]
    RewriteCond %{HTTP_HOST} ^kingston-web-design.com
    RewriteRule ^(.*)$ http://webdesign.danols.com.com$1 [R=301,L]
    

    【讨论】:

      【解决方案3】:

      如果您不关心主机名以什么开头,则不要 root 正则表达式,只需检查它是否以 companyname1.com 结尾。

      至于前导斜杠,只需将其作为可选添加到正则表达式的根目录即可。

      RewriteCond %{HTTP_HOST} companyname1.com$
      RewriteRule ^/?(.*) http://www.companyname2.com/$1 [R=permanent,L]
      

      【讨论】:

        【解决方案4】:

        或者只是使用简单的正则表达式:

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

        【讨论】:

          猜你喜欢
          • 2015-04-30
          • 1970-01-01
          • 1970-01-01
          • 2015-04-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-10
          相关资源
          最近更新 更多