不加www的域名301转向解决方法
有些同志提到一个比较仔细的301转向问题,即加www开头和不加www开头的域名,都是绑定在同一个目录,要让它们实现统一会遇到麻烦。例如笔者要把http://nosword.com转向到http://www.nosword.com, 一来是照顾部分人输入网址不习惯加www的习惯,二来也为了使搜索引擎不至于形成两份相同的复制内容;而这两个不同的URL在虚拟主机上通常是绑定到同一个目录路径的,甚至使用同一个默认初始文件,如default.asp,index.php等,并且大部分的虚拟主机设置有限,应该如何设置301转向使得这两者统一?有同志提出专门使用两个空间把它们分开,一个空间绑定www.nosword.com, 另一个空间绑定nosword.com,然后再设置转向,虽然这样可行但是成本比较高了。笔者在花了一些时间分析后,觉得以下的ASP和PHP解决方案还是比较快捷可行的。
首先,Google的Webmaster Tools后台已经有这个细心的选项,位于"工具(Tools)"菜单下面的"设置首选域名(Set preferred domain)",可以让网站主手动选择适合的域名,以防止重复收录。然而对于百度之类的其他搜索引擎,还没有提供这样的管理功能,所以还是不得不在自己的网站之中设置301转向。因此,我写了一段简单的代码,用于检测网址之中是否带有"www."这四个字符,如果没有,则可以进行301转向,如果有"www."则保持原样不做任何动作。把这段代码放进网站的首页文件,基本能满足这个转向的问题。
ASP版本 - 检测当前的域名中是否带有"www."字样
<%
Dim theUrl
theUrl = Lcase(Request.ServerVariables("HTTP_HOST") )
If Instr(theUrl, "www.")<1 Then
'这一行文字可以替换成放置301转向代码
Response.Write "测试信息:网址里面没有www. 字符,应该转向"
Else
Response.Write "测试信息:找到了www. 字符,不做任何动作"
End If
%>
PHP版本 - 检测当前的域名中是否带有"www."字样
<?php
$theurl = strtolower($_SERVER["HTTP_HOST"]);
if (strpos($theurl, "www.") === false){
// 这一行文字可以替换成放置301转向代码
echo "网址里面没有www. 字符,应该转向";
}else{
echo "测试信息:找到了www. 字符,不做任何动作";
}
?>
上面的代码再配合乐思蜀的《301转向代码合集》(http://www.dunsh.org/2008/03/19/301-redirect-code/),就能完全解决这个郁闷的问题了,唯一需要注意的是这段简单代码志只判断www存在与否,因此bbs等论坛域名也会被转向,因此只适用于放在绑定网站的首页文件之中。我在自己的ASP和PHP网站分别做了测试,并且使用了在线301转向检测工具进行测试,都能正确检测出转向,因此面对搜索引擎的蜘蛛应该没有问题,时间问题就不做实际证明了,希望有实践过的同志证实一下实际效果。
原载:无剑网
原文路径:http://www.nosword.com/200804/no-www-301-asp-php/
版权声明:转载请以链接的形式注明作者及原出处,并保留本版权信息,严禁一切非法复制。
相关文章:
浅谈Sitemap与生成Google SiteMap的ASP类 (2007-12-30 15:31:40)
点石互动2007年末北京SEM/SEO大会预告 (2007-5-31 16:1:53)
转. google搜索引擎优化圣经 (2007-5-14 10:38:59)
Comments
-
violam Said,
别担心,实际上影响不大,现在的搜索引擎不是那么笨了,设不设都无所谓。不过要注意的是,网站最好从头到尾都用同一种地址习惯,要么就www到底,要么就全部不要www,别混杂一起用就行了
Leave a Comment
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
没有毛的乌鸦 Said,
Wrote on 2008-5-1 21:58:47
博主好!有一个疑问想请教一下,我的两个域名就是绑定到同一个目录且执行同一个默认文件的,难道这样不利于搜索吗?会被搜索引擎误认为是作弊吗?