需求:
因为运营的需求,需要将所有网站的目录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