如何使用htaccess将域名重定向到子域名?

7

.htaccess对我来说有点新鲜!

我目前的网站位于www.domain.com,我正在新的域名new.domain.com上构建一个新的网站。

当新网站完成后,我想将所有流量重定向到新的子域名。

同时,我也想解决URL规范化问题。

任何帮助都将不胜感激! 谢谢 Mark


使用您的ISP的子域管理工具会不会更容易一些呢? - balpha
6个回答

8

有几种不同的解决方案。从SEO和用户角度来看,最好的是一对一的301重定向。它可以保留您的链接权重,并将客户重定向到新网站上的确切位置。

如果您启用了mod_alias,我建议使用简单的

RedirectMatch 301 ^(.*)$ / http://new.domain.com/$1

结果指令可以通过以下方式完成:
RewriteEngine On
RewriteRule (.*) http://new.domain.com/$1 [R=301,L]

第二种方法是最佳选择,如果您需要链接多个条件和过滤器。例如,如果您需要根据用户代理标头重定向仅特定的主机或客户端。
请记住:mod_redirect优先于mod_alias。

谢谢,重定向语句看起来就是这样!我还想解决任何规范化问题;这应该放在ReDirectMatch语句之前还是之后?谢谢,马克。 - user127426
你能具体一点吗?你所说的“解决任何规范化问题”是什么意思? - Simone Carletti
目前我在.htaccess文件中没有任何内容可以帮助解决www和非www的传入请求只转发到一种选项;我相信Google更喜欢这样?我想知道应该使用哪个指令以及它是在ReDirectMatch指令之前还是之后? - user127426
这应该只使用普通的“重定向”来完成,因为该正则表达式模式恰好是“重定向”执行的内容。例如,“重定向301 / http://new.domain.com/”。 - J. M. Becker

6

1
RewriteEngine On
RewriteRule (.*) http://new.domain.com/$1 [R=301,L]

这在我的情况下起了作用。太棒了!现在,Google显示的所有链接都从顶级域名重定向到子域名的相同链接。


1
我建议您使用这段代码,这样就不必担心URL地址中的"www"部分。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?mysite\.com$ [NC]
RewriteRule ^(.*)$ http://subdomain.mysite.com/ [L,R=302]

0
为什么完成后不将旧域名指向新站点呢?我认为在同一目录下指向域名应该没有问题。

也许他想要能够将来自现有链接的用户重定向到新站点,但同时告诉所有搜索引擎旧域名即将被放弃。基本上是一个宽限期,在此期间每个人都可以逐渐清除他们的数据库。 - merkuro
你好,基本上就是这样,除了我想保持www.domain.com作为网站的广告链接。 - user127426

-1
这个解决方案怎么样:
RewriteRule (.*) http://new.domain.com/$1 [R=301,L] 

1
当你只需要一个简单的重定向时,RewriteRule 是过度设计。 - Vinko Vrsalovic
如果你只是使用一个简单的重定向,难道不会失去所有的路径/文件/参数信息吗? - merkuro
我同意,这有点过头了。mod_rewrite通常用于简单的重定向,其中大部分可以通过mod_alias完成。这是我的一个简单的经验法则:如果某件事情可以使用“Redirect”或“RedirectMatch”完成,就不要使用“Rewrite...”。 - J. M. Becker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接