使用HTTP/1.1 301永久移动标题的Nginx重定向URL
时间:2020-01-09 10:45:58 来源:igfitidea点击:
如何使用Nginx反向代理使用干净的URL http://example.com/store/view/product/foo重定向旧的丑陋URL(例如http://example.com/store/view.jsp?product=foo)?
您需要在Nginx Web服务器下使用HttpRewriteModule。
该模块可以使用正则表达式(PCRE)更改URI,并根据变量重定向和选择配置。
语法如下,以根据正则表达式和替换字符串替换URI。
rewrite regex replacement flag
请注意,指令是按照配置文件中出现的顺序执行的。
这是相同的示例配置:
# rewrite urls rewrite ^/store/view/product/(.*) /store/view.jsp?product= permanent; ## Uncomment the following line to redirect old urls with HTTP/301 ## # rewrite "^/store/view.jsp?product=(.*)$" ^/store/view/product/ permanent;
这是try_files指令的另一个示例,该指令按顺序检查文件是否存在,并返回找到的第一个文件:
### Add inside server { ... } directive block ### ### Only works with Nginx version 0.7.65+ ### location / { index store.php; try_files $uri $uri/ @ourcleanurls; } # rewrite urls # location @ourcleanurls { rewrite ^/media/(.*) /includes/cache/helper.php?m=&images=1 last; rewrite ^/css/(.*) /includes/cache/helper.php?m=&css=1 last; rewrite ^/js/(.*) /includes/helper.php?m=&js=1&c=false last; rewrite ^/(.*) /store.php?pid= last; }
您需要使用以下命令重新加载Nginx服务器:
# /usr/local/nginx/sbin/nginx -s reload
如何测试新变化?
您可以使用curl命令测试新更改,包括HTTP/1.1 301 Moved消息:
$ curl -I http://example.com/store/view/product/foo $ curl -I http://example.com/store/view.jsp?product=foo