php301跳转 htaccess,php asp jsp .htaccess nginx的301跳转(永久重定向)方法

当不能控制服务器且不支持自定义

Redirect

server {

server_name domain.com;

rewrite ^/(.*)$ http://redirect.com permanent;

}

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:如a.com,a.net,www.b.net和www.a.com都是绑在一个站,为了网址规范化都要跳转到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

当然这种方法很麻烦,要在每个动态文件中都要加这代码才行,这种情况很少吧,因为虚拟主机都可以选择更多做301跳转方法,肯定有更适合的。

Cannot modify header information - headers already sent by... 错误

http头部信息已经发送给客户端了,当然就不能再修改头部状态码进行301了。这种情况是因为有HTML实质内容的输出,所以转向代码要放在HTML输出之前。当然其它情况也能造成输出,以PHP为例,如文件< ?php ... ?>之外有空白行,特别是include或者require的文件,这有可能导致输出,可以开启缓存ob_start();只要在转向之前缓存不满,网页就不会被发送。或者在跳转前运行ob_end_clean(),清除所有缓存并关闭缓存,这样再设置头部信息就没问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值