配置详解
URL的rewrite(重写)是Nginx的http请求处理过程中的一个重要功能,它能对用户请求的URL进行正则重写,然后返回30×重定向跳转或按条件执行相关配置。Nginx使用内置的ngx_http_rewrite_module模块解析和处理rewrite请求。
语法规则
- rewrite 正则表达式 目标URL [选项];
配置说明
1、正则表达式:允许基于Perl兼容的正则表达式(PCRE)对用户请求的URL进行重写。例如:
- ^/(.*)$,表示以/开头,然后以0至多个字符结尾的字符串。
- ^/admin/(.*)$,表示以/admin/开头,然后以0至多个字符结尾的字符串。
2、选项:控制重写行为。
- last:处理完当前规则后停止匹配,并根据重写的URL重新进行匹配。
- break:执行重写请求,但不进行新的location匹配。
- redirect:返回302,临时重定向,表示URL临时改变。
- permanent:返回301,永久重定向,表示URL永久改变。
注意事项
rewrite指令针对不同的作用域可以配置在server和location块中。
配置示例
1、基于域名的重写,主要用于将旧域名的请求重定向至新域名。

- rewrite ^/(.*)$ http://www.ywkt.net/$1 permanent:将所有请求包括路径、请求参数等全部内容永久重定向至www.ywkt.net。$1是对前面括号中正则匹配的内容的引用,即除首字符/外的所有字符。
2、基于路径的重写,主要用于将旧路径的请求重定向至新路径。

- rewrite ^/(.*)$ /admin/$1 permanent:将所有请求包括路径、请求参数等全部内容永久重定向至新路径/admin/。
3、基于文件类型的重写,主要用于将某一类文件的请求重定向至新路径。

- rewrite ^/images/(.*)$ /static/images/$1 last:将images下所有的png图片重定向至新路径/static/images。