如何做nginx的重定向
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何做nginx的重定向相关的知识,希望对你有一定的参考价值。
方法/步骤:由于网站的url由动态改为了伪静态,原先的动态网址依然能够访问,导致原先的url的权重无法转移,所以对原来的url做301重定向,并在百度站长中提交网站改版请求。
网上的教程都是直接根据文件重定向的,对于单一入口的程序不适用,所以写下次教程。
示例:
if ($args ~* mod=item&act=view&id=(\\d+) )
rewrite ^/(.*)$ http://$host/item/$arg_id.html? permanent;
$args是当前url问号后面的部分,相当于$query_string
$arg_id是id的值,格式为$arg_
rewrite是url重写命令
permanent代表的是返回301永久重定向状态码
$host为当前网站的域名部分
结尾的问号代表不会将url后面的参数一起带过去
^和$是代表的是正则匹配
if条件中的(\\d+)代表的是数字参数,如777
注意:nginx中if命令不能嵌套,不能有多条件
if条件中的等号只有一个
注意if的空格问题
if条件中可以有多条url重写语句
重定向是基于文件的,示例中是适用于index.php?mod=a&act=b的结构
如:rewrite 文件A 重定向到某地址
示例:
rewrite ^/good.php$ http://$host permanent;
rewriet ^/good1.php$ http://$host/ permanent;
如果需要对网站的域名进行重定向,可参考以下示例:
将不带www的域名重定向到带www的域名
server
......
server_name www.fsech.com fsech.com
......
if ($host = fsech.com)
rewrite ^(.*)$ http://www.fsech.com permanent;
参考技术A
由于网站的url由动态改为了伪静态,原先的动态网址依然能够访问,导致原先的url的权重无法转移,所以对原来的url做301重定向,并在百度站长中提交网站改版请求。
示例:
if ($args ~* mod=item&act=view&id=(\\d+) )rewrite ^/(.*)$ http://$host/item/$arg_id.html? permanent;
$args是当前url问号后面的部分,相当于$query_string
$arg_id是id的值,格式为$arg_
rewrite是url重写命令
permanent代表的是返回301永久重定向状态码
$host为当前网站的域名部分
结尾的问号代表不会将url后面的参数一起带过去
^和$是代表的是正则匹配
if条件中的(\\d+)代表的是数字参数,如777
注意:nginx中if命令不能嵌套,不能有多条件
if条件中的等号只有一个
注意if的空格问题
if条件中可以有多条url重写语句
重定向是基于文件的,示例中是适用于index.php?mod=a&act=b的结构
如:rewrite 文件A 重定向到某地址
示例:
rewrite ^/good.php$ http://$host permanent;
rewriet ^/good1.php$ http://$host/ permanent;
如果需要对网站的域名进行重定向,可参考以下示例:
将不带www的域名重定向到带www的域名
server......
server_name www.fsech.com fsech.com
......
if ($host = fsech.com)
rewrite ^(.*)$ http://www.fsech.com permanent;
参考技术B if ($http_referer !~ "^域名百度总乱屏蔽.*$")
set $rule_0 1$rule_0;
if ($rule_0 = "1")
rewrite /.*.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ /images.php;
本回答被提问者和网友采纳
以上是关于如何做nginx的重定向的主要内容,如果未能解决你的问题,请参考以下文章