将 www.subdomain.example.com 重定向到 subdomain.example.com
Posted
技术标签:
【中文标题】将 www.subdomain.example.com 重定向到 subdomain.example.com【英文标题】:redirecting www.subdomain.example.com to subdomain.example.com 【发布时间】:2011-02-23 23:22:48 【问题描述】:我有一些用户试图通过 www.subdomain.example.com 访问注册为 subdomain.example.com 的网站。
我可以添加某种 .htaccess 规则来将使用 www.subdomain.example.com 到达的人重定向到 subdomain.example.com 吗?
另外,我是否必须更改 DNS 内容?
【问题讨论】:
【参考方案1】:当然,使用如下指令:
<VirtualHost *:80>
ServerName www.subdomain.example.com
Redirect permanent / http://subdomain.example.com/
</VirtualHost>
当使用 Redirect
指令时,Apache 会自动保留 /
之后的任何内容,这是一个常见的误解,即为什么该方法不起作用(实际上它起作用)。
另外,是的,您需要更改 DNS 记录,因为 www.subdomain.example.com
是一个不同的主机名,需要它自己的 A(或 CNAME)记录首先将浏览器指向适当的服务器。
【讨论】:
这假设 OP 正在使用NameVirtualHost *:80
@Martin:这是一个相当安全的假设。如果不是,那么重要的部分是 Redirect
指令,而不是 VirtualHost
容器。
人们已经在使用www.subdomain.domain.com
访问该站点这一事实表明该 DNS 记录可能已经存在...如果是这样,则无需更改。【参考方案2】:
您需要在 httpd.conf 和 Redirect Permament 中添加一个虚拟主机指令到正确的子域并添加额外的 DNS 条目(CNAME 很好)
【讨论】:
【参考方案3】:RewriteCond %HTTP_HOST ^www.subdomain.domain.com
RewriteRule (.*) http://subdomain.domain.com/$1 [R=301,L]
【讨论】:
使用重写引擎是解决这个问题的一种非常重量级的方法。Redirect
指令的作用完全相同。
@GregHewgill 同意,此外,除非将其放置在与 www.subdomain.domain.com(或默认虚拟主机)匹配的虚拟主机中,否则此答案甚至不起作用。以上是关于将 www.subdomain.example.com 重定向到 subdomain.example.com的主要内容,如果未能解决你的问题,请参考以下文章
Javascript 将正则表达式 \\n 替换为 \n,将 \\t 替换为 \t,将 \\r 替换为 \r 等等