9 人参与回答
简单收录网 等 1 人赞同该回答
1:使用rewrite指令,通过正则匹配所有的URI后再去掉开头第一个/(反斜线)。
1rewrite ^/(.*)$ $1;
2:同样使用rewrite指令,不同的是通过$request_uri变量匹配所有的URI。
1rewrite ^ $request_uri? permanent;
这样写的好处是省去了去掉开头第一个反斜线的过程,正则匹配上性能更优。
3:使用return指令,通过301状态码和$request_uri参数,直接告诉Nginx这是个301重定向和抓取指定URI。
1return 301 $request_uri;
这种方法是性能上最优的,因为rewrite指令有很多写法和规则,执行完所有正则匹配后,Nginx 才会知道这是一个301永久重定向。
(1)rewrite ^/(.*)$ $1
(2)rewrite ^ $request_uri? permanent;
(3)1return 301 $request_uri;
执行完所有正则匹配后,Nginx 才会知道这是一个301永久重定向。
只有这一个页面还是这种格式的所以
301要到服务器供应商哪里去弄,哪里应该会有一些意见
location / {
rewrite ^/post/([0-9]+).html$ /post/-$1\.html last;
}