Nginx如何实现URL重写?

Nginx可以通过rewrite模块实现URL重写。URL重写主要用于:

  • 重定向:将一类URL重定向到另一类URL。
  • 美化URL:将动态URL转换为静态URL,提高网站SEO与美观度。
  • 移动端适配:根据User-Agent识别移动设备,重写URL方便客户端访问。

rewrite语法:

rewrite regex replacement [flag];
  • regex:匹配要重写的 URL 模式
  • replacement:重写后面的目标URL
  • flag:可选,标记重写规则的生命周期与作用范围

常用flag:

  • last:结束rewrite检测,不再匹配后续规则。
  • break:结束本次重写指令检查。
  • redirect:返回302临时重定向。
  • permanent:返回301永久重定向。

配置示例:

# 重定向        
rewrite ^/old/(.*)$ /new/$1 redirect;  

# 美化URL 
rewrite ^/page/([0-9]+)$ /post-$1.html last;  

# 移动端适配    
rewrite ^/m/(.*)$ /$1 break;  
  • 第一条规则实现URL从/old/ 重定向到 /new/,状态码为302。
  • 第二条规则将/page/1 重写为/post-1.html,last标记结束后续重写。
  • 第三条规则将/m/ 开头的URL重写为去除/m/的URL,break结束本次重写检查。

所以访问 /old/test 会重定向到 /new/test
/page/1 会重写为 /post-1.html
/m/test 会重写为 /test