解决Nginx访问URL末尾不加斜杠 / 报404错误

一、问题描述

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.htmlindex.htm
  • 访问http://xxx.com/yyy:会匹配失败报404错误。

三、解决方法

A、解决思路

  • 既然加斜杠/可以匹配,那么可以对不加斜杠/的URL进行重写,末尾加上斜杠,然后重定向。
  • 使用Nginxngx_http_rewrite_module。首先判断请求资源是否为目录类型if ( -d $request_filename ),然后利用正则匹配替换,并用rewritepermanent来重定向"301"(rewrite ^/(.*)([^/])$ $scheme://$host/$1$2/ permanent)

B、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;
    }
    ...
}

C、验证nginx.conf是否有错

./sbin/nginx -t


D、重启Nginx

./sbin/nginx -s reload


 

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hekliu

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值