西域之眼1:不加www的域名301转向解决方法 - 无剑网

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 01:11:23

不加www的域名301转向解决方法

发布:violam 时间:2008-4-6 14:52:4 分类: SEO/SEM笔记

有些同志提到一个比较仔细的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."字样

$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/
版权声明:转载请以链接的形式注明作者及原出处,并保留本版权信息,严禁一切非法复制。