2010-06-04 66 views
0

我希望所有的流量去:摆脱www的最佳方式。和

http://www.domain.com

http://domain.com

|

V

http://main.domain.com

我可以使用PHP的.htaccess或者也可以是,我使用Zend框架。请注意,我也有:

http://sub1.domain.com

http://sub2.domain.com

THX

+0

它是如何摆脱www或如何重定向请求的问题?你能在问题上更协调一致吗? – 2010-06-04 05:16:05

+0

我需要重定向www。和。请妥善保管.main。,keep/any/path/info /。这是我的Zend框架设置的结构。 – y2k 2010-06-04 05:16:55

回答

6

此规则将保留完整的URI

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

PS:我不能想出如何使第二线没有明确的域规格更加便于携带。我会感谢能纠正我的人。

+0

需要mod_rewrite才能正常工作,但这通常是启用的。这些规则进入'.htaccess'文件。 – Thorarin 2010-06-04 05:23:22

+0

@Thorarin:他肯定已经启用了,因为这句话:“请求.main,keep/any/path/info /”。但是,对于任何稍后会阅读的人来说 - 这是很好的说明。 – zerkms 2010-06-04 05:25:31

+0

是的,我有mod_rewrite,所以这应该工作。谢谢 – y2k 2010-06-04 05:25:42

1

为什么不使用ServerName指令?

1

当域名服务器协议被设计为处理完全像这样的重定向时,服务器端解决方案似乎有点不必要。路径信息和POST变量被透明地保存。

如果您有权访问您网站的DNS记录,最好使用CNAME record将用户重定向到正确的域名。

CNAME指向人们将寻找一个域(例如site.com)的人指向另一个域(例如main.site.com)。这一切都在你的服务器上没有任何工作。

只需两条记录添加到您的指向CNAME记录:

domain.com => main.domain.com 
www.domain.com => main.domain.com 

如果您当前的DNS提供商不提供此,请尝试使用ZoneEdit,谁在过去的工作对我们非常好。

+1

CNAMES仍然会为domain.com和www.domain.com发送浏览器标题,他希望这些perm重定向到main.domain.com,这会影响搜索排名分割。 – Tracker1 2010-06-04 06:07:14

1

你正在做的是一个Web服务器的功能。所以让Web服务器处理请求。所以最有效的方法是使用.htaccess重定向指令。 使用PHP做它是一种低效率的方式。