一、问题描述
Nginx中配置location的匹配规则时,访问URL时末尾加上斜杠/可以访问,末尾不加斜杠/就会报404错误。
二、Nginx配置
server { listen 80 server_name xxx.com ... location /yyy { root /zzz/aaa; index index.html index.htm; } ... }
访问http://xxx.com/yyy/:会匹配到服务器的/zzz/aaa/yyy文件夹下index.html或index.htm。
访问http://xxx.com/yyy:会匹配失败报404错误。
三、解决方法
1、解决思路
既然加斜杠/可以匹配,那么可以对不加斜杠/的URL进行重写,末尾加上斜杠,然后重定向。
使用Nginx中ngx_http_rewrite_module。首先判断请求资源是否为目录类型if ( -d $request_filename ),然后利用正则匹配替换,并用rewrite中permanent来重定向"301"(rewrite ^/(.*)([^/])$ $scheme://$host/$1$2/ permanent)
2、nginx.conf
server { listen 80 server_name xxx.com ... location /yyy { root /zzz/aaa; if (-d $request_filename){ rewrite ^/(.*)([^/])$ $scheme://$host/$1$2/ permanent; } index index.html index.htm; } ... }
3、验证nginx.conf是否有错
./sbin/nginx -t
4、重启Nginx
./sbin/nginx -s reload
关于Zblog下怎么解决分类URL加斜杠报错404的问题,请看:Zblog访问分类URL末尾不加斜杠 / 报404错误,如何解决?
还没有评论,来说两句吧...