Kevin的论坛使用的是新网的北京双线机房VPS,因为资源充裕,所以就绑定了两个域名同时可以访问论坛,实际上是可以通过两个顶级域名和两个WWW二级域名共有四个域名可以访问他的论坛,会员登录的时候因为域名问题而无法正常保存Cookie,便要我帮他设置一下页面跳转。
其实域名跳转有好多种方法,可以在服务器上设置Rewrite来实现页面的跳转,如果是静态页面,可以使用JS来跳转,如果是动态页面,可以使用Header来实现跳转。因为他用的是DiscuzX论坛,为了不去修改服务器的配置,我便使用Header来实现跳转。
使用Header实现页面的跳转只需要一个条件语句,判断主机名是否符合预设的主机名,如果不是则跳转,就这么简单。但快乐男孩在设置之前,觉得还是加上Http Status,这样做的好处在于对搜索引擎的足够友好。多域名同时访问一个网站很容易被搜索引擎视为作弊,而如果只是简单的跳转,在输入的地址后返回的Http Status是200,搜索引擎在索引的时候会认为这个页面是可以正常访问的,但实际上却又进行了跳转,其结果也一样会容易被视为作弊。因此非常有必要加上Http Status,告诉搜索引擎为什么要跳转。
Http Status有多种状态值,在这里快乐男孩使用的是307重定向,告诉搜索引擎这是临时性的跳转,其实也可以使用301,告诉搜索引擎是永久生的。
附:常见HTTP状态码
200 OK
301 Moved Permanently
302 Found
304 Not Modified
307 Temporary Redirect
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
410 Gone
500 Internal Server Error
501 Not Implemented
100 Continue
初始的请求已经接受,客户应当继续发送请求的其余部分
101 Switching Protocols
服务器将遵从客户的请求转换到另外一种协议
200 OK
一切正常,对GET和POST请求的应答文档跟在后面
201 Created
服务器已经创建了文档,Location头给出了它的URL。
202 Accepted
已经接受请求,但处理尚未完成。
203 Non-Authoritative Information
文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝
204 No Content
没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的
205 Reset Content
没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容
206 Partial Content
客户发送了一个带有Range头的GET请求,服务器完成了它