【问题标题】:Redirect if domain is not correct如果域不正确则重定向
【发布时间】:2014-01-13 15:05:27
【问题描述】:

我需要将带有错误域的 URL 重定向到正确的域。

伪代码示例:

if (domain != "www.correctdomain.com")
    redirect("www.correctdomain.com")

如何使用.htaccess 文件执行此操作?

【问题讨论】:

    标签: apache .htaccess redirect


    【解决方案1】:

    您可以使用 If 指令来执行此操作...

    <If "%{HTTP_HOST} != 'www.example.com'">
    Redirect / http://www.example.com/
    </If>
    

    或 mod_rewrite。见http://httpd.apache.org/docs/current/rewrite/remapping.html

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

    【讨论】:

    • 澄清接受答案的说明:如果您运行的是 Apache 2.4.x,则只能使用 &lt;IF&gt; 指令
    • 您还可以使用RewriteCond %{HTTP_HOST} !^(.*)example\.com [NC] 包含任何子域
    • RewriteCond %{HTTP_HOST} !^$ 指令有什么作用?如果HOST不为空?
    • @DRSDavidSoft 我想知道这可能在哪里相关。可能是非常旧的 Web 客户端,其中不包含 Host header in HTTP request
    • @DRSDavidSoft stackoverflow.com/questions/4574064/serverhttp-host-not-set 涵盖了一些条件。一个是对 IP 地址的请求——我们不希望改变这些。其他是内部apache内部虚拟连接,或Options等。所以该行确保这是一个正常的请求。
    【解决方案2】:

    在 SEO 目的上最好做 301 重定向:

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

    【讨论】:

    • 关于301的评论是对的,但是代码是错的。这会将 www.example.com 重定向到 example.com。 OP希望将所有不是 www.example.com 的内容重定向到 www.example.com ...
    • 也许这个答案与上面的问题不匹配。但它完全符合我的用例:-) 我想从 www.example.com 重定向到 example.com。
    猜你喜欢
    • 2016-06-12
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    相关资源
    最近更新 更多