abc.com和abc.com/ 的区别 -兼谈域名转向

对于同一个URL,http://abc.com 和http://abc.com/ 对于访客和搜索引擎没有任何区别.
但在站点域名迁移时

比如把你的网站域名由blog.abc.com转换为 abc.com,
为了最大程度减少对搜索引擎排名和外部链接数影响,通常我们使用301 Moved Permanently (永久重定向)

方法是在.旧域名blog.abc.com根目录.htaccess中加入以下代码


Redirect 301 / http://abc.com/

或者用这种Mod_Rewrite代码(需要Aapche安装mod_rewrite模块)


RewriteEngine on
RewriteRule ^(.*)$ http://abc.com/$1 [R=301,L]

这两种方法对与客户端和浏览器是完全等效和透明的
访问http://blog.abc.com/$1 都会被301 Directed到 http://abc.com/$1

Dreamhost在域名管理界面(Manage Domains – Edit Domain) 提供的”Redirected Domain” 实际上就是 用第一种形式代码实现的 301永久重定向,不过不是通过.htaccess,而是通过 httpd.conf Apache配置文件.

然而,如果在DH域名管理界面把blog.abc.com域名重定向到http://abc.com, 你会发现,只有 http://blog.abc.com会被正常重定向而可以访问,而http://blog.abc.com/$1 将会被重定向到 http://blog.abc.com$1 而出现 Host Not Found !

因为此时实际的转向代码是


Redirect 301 / http://abc.com

这只是一个偶最近转换自己博客地址时发现的小问题,
还是请大家注意, abc.com 和 abc.com/ 的区别.

PS: Dreamhost 对于域名 提供的是否去掉或增加”www.” 前缀的选项
实际上也是通过301 Redirect 实现的

PS2: 简单谈一下关于域名和URL转向.

大家知道PHP语言URL转向代码是:



实际上,这是通过302转向实现.

PHP也可以实现页面级别301转向,只要先发送一个状态码header



继续考虑一些 域名服务商提供的’域名URL转发服务”
如果是非隐藏URL转发,那么可以直接用上面 301 Redirected实现

如果是隐藏式URL转发,偶还不太明白原理
不过应该是通过Apache mod_rewrite实现的.
偶正在看Apache文档中Mod_rewrite部分,非常复杂艰深,学习中.

0 Responses to “abc.com和abc.com/ 的区别 -兼谈域名转向”


Comments are currently closed.