引用自官网
The ngx_http_rewrite_module module is used to change request URI using PCRE regular expressions, return redirects, and conditionally select configurations.
意思是ngx_http_rewrite_module模块用于使用PCRE正则表达式更改请求URI,返回重定向和配置条件判断后执行相应操作。
场景之一
今天要把一个网站的一个url重定向至首页,避免被百度(liu mang)爬虫(wei suo),于是就在生产环境的nginx配置里面添加了如下配置:
1 | if ($uri ~* "order_create"){ |
好咧,nginx reload之后,所有访问 www.xxx.com/order_create 的请求都跳转到首页去了,包括 www.xxx.com/order_create/alc www.xxx.com/order_create/pub?id=n 等诸如此类的URL都跳转的首页去了,这尼玛玩大发了~~
思考了一下,应该是没做匹配收尾,结果所有order_create开头的URL,只要匹配上,全部被rewrite。
于是就有了下面的的改良配方~~
1 | rewrite ^\/order_create$ https://$server_name permanent; |
用正则表达式的整段匹配,^锚定行首,$锚定行尾,爽歪歪。
再测试就没问题了。不影响订单创建,要求跳转的URL也实现了。