Nginx:地址重写(return和rewrite)

发布时间:2022-07-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Nginx:地址重写(return和rewrite)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

Nginx的重写指令用于改变客户端的URL请求。主要有returnrewrITe。两个指令都有重写URL的能力,但rewrite支持更复杂的功能。

Return指令

server中返回 301 重定向:

server {
        listen 80;
        server_name www.olddomain.COM;
        return 301 $scheme://www.newdomain.com$REQUEST_URI;
}

location中返回 301 重定向:

location = /tutorial/learning-nginx {
     return 301 $scheme://example.com/nginx/understanding-nginx
}

Rewrite指令

语法介绍

rewrite regex replacement-url [flag];
  • regex: 正则表达式
  • replacement-url: 替换的URL
  • flag: 用于进行一些额外的处理

不同flag的效果:

flag 说明
last 停止解析,并开始搜索与更改后的URI相匹配的location;
break 中止 rewrite,不再继续匹配
redirect 返回临时重定向的 HTTP 状态 302
PErmanent 返回永久重定向的 HTTP 状态 301

注意:rewrite只能返回301和302状态码,如果需要返回其他状态码,可以在rewrite命令后使用return

案例

简单案例

https://example.com/nginx-tutorial重写为https://example.com/somePage.htML

location = /nginx-tutorial 
{ 
    rewrite ^/nginx-tutorial?$ /somePage.html last; 
}
动态替换案例

https://www.example.com/user.php?id=11重写为https://exampleshop.com/user/11

location = /user.php 
{ 
    rewrite ^/user.php?id=([0-9]+)$ /user/$1 last; 
}

其中$1表示regex中第一个括号中的值,第二个括号中的值可通过$2获取

手机访问重定向网址

https://www.example.com重写为https://m.exampleshop.com

location = /
{
    if ($http_user_agent ~* (mobile|nokia|iphone|ipad|andROId|samsung|htc|blackberry)) {
    rewrite ^(.*) https://m.example.com$1 redirect;
    }
}

脚本宝典总结

以上是脚本宝典为你收集整理的Nginx:地址重写(return和rewrite)全部内容,希望文章能够帮你解决Nginx:地址重写(return和rewrite)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。