首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >区分大小写/不区分大小写的匹配在nginx中不起作用

区分大小写/不区分大小写的匹配在nginx中不起作用
EN

Stack Overflow用户
提问于 2021-04-18 20:08:00
回答 1查看 45关注 0票数 1

在我的server指令中,位置配置如下

代码语言:javascript
运行
复制
    location ~ \.(html)$ {
        expires max;
        return 200 "case sensitive match";
    }

    location ~* \.(html)$ {
            expires 10d;
            return 200 "case insensitive match";
    }

我的期望是,当我加载localhost/somthing.html时,它应该打印case sensitive match,当我加载localhost/something.hTML时,它应该打印case insensitive match

但是,在这两种情况下,都会打印case sensitive match

access.log中的请求日志为

代码语言:javascript
运行
复制
127.0.0.1 - - [18/Apr/2021:17:56:15 +0530] "GET /something.hTML HTTP/1.1" 200 20 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15"

附件图片,请参阅打印的声明以及设置为MAXexpires,以证明case sensitive match工作正常。这里会出什么问题呢?

EN

Stack Overflow用户

回答已采纳

发布于 2021-04-19 19:06:47

在文件系统不区分大小写的操作系统(例如Mac和Windows)中,location ~匹配仍然是不区分大小写的。

要强制使用不区分大小写的模式,您需要使用(?-i)将其包含在正则表达式本身中。

代码语言:javascript
运行
复制
location ~ "(?-i)\.(html)$" {
    ...
}

参见this (very old) issue

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67148337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档