nginx实现http协议301、302重定向
2016-12-14 16:49
429 查看
转载自http://laoxu.blog.51cto.com/4120547/1410052
参考 http://blog.csdn.net/qmhball/article/details/7838989
最近在配合其他团队对网站进行seo方面的优化,其中建议需要对url进行大量301修改,基本就是将原来的较长的url重新定向到一个比较短的url,提高对搜索引擎的友好程度,如果发现你的网页从一个很精简的url被定向到一个冗长的url上,可能是被劫持了,对于google比较智能的搜索引擎,它还会接受之前的那个精简的,因为它更加友好化。今天就把这个http的301返回码分析一下。
HTTP协议301返回码:简单的说就是永久重定向(Permanently Moved)
HTTP协议302返回码:简单的说就是暂时重定向(Temporarily Moved)
实现301、302的重定向其实就是通过对http协议location的修改
用php的header函数去实现这个请求
可以看到我做个301永久重定向到baidu首页。
如果代码是这样呢?
发现如果php在header函数实现重定向方法时,不标明返回码为301默认是302暂时性重定向。
以上是在应用程序上实现301或者302跳转,明白了301、302重定向的原理是对http报文的location进行修改,但是我们一般都是在web服务器上去做。nginx有一个location指令,它是不是可以修改http报文的location进行重新定义呢?
首先对一个静态页面访问,查看请求的头部信息
返回码是200,并没有之前的请求报文的location标签信息
那么在nginx.conf配置文件里增加一段配置,意思是当请求以html结尾的文件重定向到对应的以php结尾的文件,也就是请求index.html重定向对应到index.php上
平滑重新启动nginx服务,再请求刚才的url,返回码为301,header头部信息里增加了location信息,指明了被重新定向到index.php上
这就是nginx如何实现301的,nginx实现302重定向,只要把permanent改成redirect即可
平滑重新启动nginx服务,http的头部信息里面变成了302重定向
注意避免301跳转的死循环,以下我同时在nginx和应用程序上实现了301,也就是从html跳转到php,然后又从php跳回html页面,出现这种情况chrome浏览器会出现这种提示
如果下次遇到这种问题,可能是出现重定向的死循环了。
PS:此外也可以用javascript做跳转,但是js跳转权重是不能很快从旧的地址传递给新的地址,至少6个月左右才会传递过去。
参考 http://blog.csdn.net/qmhball/article/details/7838989
最近在配合其他团队对网站进行seo方面的优化,其中建议需要对url进行大量301修改,基本就是将原来的较长的url重新定向到一个比较短的url,提高对搜索引擎的友好程度,如果发现你的网页从一个很精简的url被定向到一个冗长的url上,可能是被劫持了,对于google比较智能的搜索引擎,它还会接受之前的那个精简的,因为它更加友好化。今天就把这个http的301返回码分析一下。
HTTP协议301返回码:简单的说就是永久重定向(Permanently Moved)
HTTP协议302返回码:简单的说就是暂时重定向(Temporarily Moved)
实现301、302的重定向其实就是通过对http协议location的修改
用php的header函数去实现这个请求
可以看到我做个301永久重定向到baidu首页。
如果代码是这样呢?
发现如果php在header函数实现重定向方法时,不标明返回码为301默认是302暂时性重定向。
以上是在应用程序上实现301或者302跳转,明白了301、302重定向的原理是对http报文的location进行修改,但是我们一般都是在web服务器上去做。nginx有一个location指令,它是不是可以修改http报文的location进行重新定义呢?
首先对一个静态页面访问,查看请求的头部信息
返回码是200,并没有之前的请求报文的location标签信息
那么在nginx.conf配置文件里增加一段配置,意思是当请求以html结尾的文件重定向到对应的以php结尾的文件,也就是请求index.html重定向对应到index.php上
平滑重新启动nginx服务,再请求刚才的url,返回码为301,header头部信息里增加了location信息,指明了被重新定向到index.php上
这就是nginx如何实现301的,nginx实现302重定向,只要把permanent改成redirect即可
平滑重新启动nginx服务,http的头部信息里面变成了302重定向
注意避免301跳转的死循环,以下我同时在nginx和应用程序上实现了301,也就是从html跳转到php,然后又从php跳回html页面,出现这种情况chrome浏览器会出现这种提示
如果下次遇到这种问题,可能是出现重定向的死循环了。
PS:此外也可以用javascript做跳转,但是js跳转权重是不能很快从旧的地址传递给新的地址,至少6个月左右才会传递过去。
相关文章推荐
- nginx实现http协议301、302重定向
- http协议301、302的原理和实现
- http协议 301和302的原理及实现
- 如何用nginx+ffmpeg实现苹果HLS协议 (http living stream)
- http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
- HTTP 的重定向301,302,303,307(转)
- http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
- 使用PHP进行HTTP重定向(301,302)
- HTTP 的重定向301,302,303,307(转)
- http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
- http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
- 如何用nginx+ffmpeg实现苹果HLS协议 (http living stream)
- nginx实现永久(301)/临时(302)跳转
- 如何实现301的跳转?当输入域名http://xxx.com的时候自动重定向到www上去
- php http 301 302 重定向 跳转
- nginx 301 302 重定向
- .htaccess实现301网页永久重定向及302临时重定向
- Http协议3XX重定向介绍及301跳转和302跳转应用场景
- http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
- nginx中实现把所有http的请求都重定向到https