vlambda博客
学习文章列表

Nginx | 配置rewrite或return方法实现页面强制跳转

一、跳转规则参考

rewrite方法

配置语法:rewrite [正则表达式 替换前的URL] [替换后的URL] [标识];

作用域:http域/server域/location域/if判断里,优先级(http域 > server域 > location域)

标识说明

标识 类型作用
last 停止rewrite的检测 ,返回200
break 停止rewrite的检测,返回404
redirect 返回302临时重定向, 地址栏会显示跳转后的地址,并再次请求,返回200
permanent 返回301永久重定向, 地址栏会显示跳转后的地址(后面再次访问也会定向至该地址, 除非清理缓存) ,返回200

示例1-不同站点的跳转

将connect.test.com 301跳转到www.test.com/connect/

if ($host = "connect.test.com"){
    rewrite ^/(.*)$ http://www.test.com/connect/$1 permanent;
}

将www.test.com/connect 跳转到connect.test.com

rewrite ^/connect$ http://connect.test.com permanent;

示例2-站内跳转

将 www.test.com/category/123.html 跳转为 category/?cd=123

rewrite "/category/(.*).html$" /category/?cd=$1 last;

return方法

示例1-http跳转https

如果站点监听80 443在同一个server域配置文件中,http跳转到https,在server域加入,

if ($scheme = http) {
    return  301 https://$host$request_uri;
}

如果80 443监听配置在不同的server域,80监听的server域的location / {}段中加入,

return 301 https://$host$request_uri;


Enjoy Nginx