工作中nginx的重写案例记录

需求:

因为运营的需求,需要将所有网站的目录test1的访问请求跳转到tes2,

如何将abc.com/test1/1.html ?301跳转到#abc.com/test2/1.html(保留收录,其中test1下面有多层目录,有的目录下有index.html或者是htm)

方法:

1.现将test1下的所有文件目拷贝到special下面,确保 abc.com.cn/test2/能打开
2.修改nginx的配置,添加一下内容
location /test1 {
rewrite ^/test1/(.*)$ http://$server_name/test2/$1$args? permanent;
}
3.检查nginx的配置文件是否有误,relaod nginx
4.打开网页,测试是否正常,如果不正常,马上恢复到修改之前的状态

注释:

^ 匹配输入字符串的起始位置

$?匹配输入字符串的结束位置

$args ?#这个变量等于请求行中(GET请求)的参数,例如foo=123&bar=blahblah;

??匹配前面的字符0次或者一次

permanent 是flag标记,返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

其他flag标记:

redirect?返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

last 本条规则匹配完成以后,继续向下匹配新的locationURI规则

break?本条规则匹配完成以后,不在匹配后面任何规则

测试:

当在浏览器中输入abc.com/test1/1.html,并回车之后,浏览器地址栏会出现abc.com/test2/1.htm

此条目发表在Linux分类目录,贴了, , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注