如果域不正确则重定向
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,则只能使用<IF>
指令
您还可以使用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:如果身份验证失败,则重定向到登录页面