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