返回列表 回复 发帖

PHP ASP JSP 301跳转代码(301永久重定向)

当URL变更时,最好的SEO方式就301跳转,能够转移权重。但仅用于内容的重定向,即URL变了,内容没变。如果网站改了,内容和URL不存在了,则不适用301跳转。

ASP、ASP.net 301跳转代码
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "URL"
PHP 301 跳转代码
header("HTTP/1.1 301 Moved Permanently");
header("Location: URL");
exit(); //注意:虽然客户端转向了,但程序还会向下执行,所以要exit
JSP 301跳转代码
response.setStatus(301);
response.setHeader("Location","URL");

其它301永久重定向方法
*DNS服务器的URL转发。这个功能简单,不过做起来也省事,要用SEO工具检查一下是不是301跳转,因为有的转发不是用得301状态。
*rewrite模块地址重写。虚拟主机可以配置.htaccess或httpd.ini来写规则进行301跳转。如果不支持就没办法了,能控制主机的用户可以直接在服务器上配置。
交流QQ群:13519368

ASP JSP PHP 301跳转代码FAQ

Firefox 检测到该服务器正在将此地址的请求循环重定向
原因之一可能就是如果实际应用时多个域名绑一个站的301代码问题
如a.com,a.net,www.b.net和www.a.com都是绑在一个站,为了网址规范化都要301跳转到www.a.com这个主域名上,因为默认的页面都是同一个,就要进行条件判断是否跳转,即对主机头不是www.a.com才转向,以ASP为例:
IF Request.Url.Host<>"www.a.com" THEN
string newurl="http://www.a.com" & Request.Url.PathAndQuery
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", newurl
END IF
如果不加判断,就会自己重定向到自己形成循环。

Cannot modify header information - headers already sent by...错误
http头部信息已经发送给客户端了,当然就不能再修改头部状态码进行301了。因此转代码要放在HTML输出之前,不能用HTML实质内容输出。
以PHP为例,如文件<?php ... ?>之外有空白行,特别是include或者require的文件,这有可能导致输出,这时就不能再修改头部信息了。可以开启缓存ob_start();只要在转向之前缓存不满,网页就不会被发送,就修改状态码;或运行ob_end_clean()清除所有缓存并关闭缓存。
交流QQ群:13519368
返回列表