如果域不正确则重定向

Posted

技术标签:

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

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

伪代码示例:

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

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

【问题讨论】:

【参考方案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 ***.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。

以上是关于如果域不正确则重定向的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security - 如果已经登录则重定向

Django:如果 slug 错误,则重定向 url

Spring Security:如果身份验证失败,则重定向到登录页面

如果应用程序未以编程方式安装 firebase 动态链接,则重定向到 iOS App Store

如果用户已登录,则重定向

如果未登录,则重定向 html 页面