V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dengsq
V2EX  ›  程序员

一个正则问题的请教

  •  
  •   dengsq · 2021-03-27 17:24:35 +08:00 · 1381 次点击
    这是一个创建于 1331 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在配置一个 Nginx location 的禁止访问路径,碰到一个正则的问题...

    要求是这样的,如:

    对于 /users 开头的地址,只允许访问 /users/self/* 下的路径
    
    /users/a 不允许访问
    /users/b 不允许访问
    /users/self/a 允许访问
    

    然后其他的地址都不做限制,这个 localtion 要如何写好呢?

    目前参照网上博客的写法如下,但是条件是需要取反的

    location ~* /users/self/* {
    	deny all;
    	return 403;	
    }
    //这样子是全部禁止访问了,需要取反,还不能影响其他路径
    
    3 条回复    2021-03-27 17:53:24 +08:00
    0ZXYDDu796nVCFxq
        1
    0ZXYDDu796nVCFxq  
       2021-03-27 17:27:17 +08:00 via Android
    location ^~ /user/self/
    location /user/ {deny all; }
    dengsq
        2
    dengsq  
    OP
       2021-03-27 17:40:17 +08:00
    @gstqc 我一直在想两个条件的表达式,怎么取交集...
    nginx 不太熟,没想到可以写两个,谢谢老哥了哈哈
    0ZXYDDu796nVCFxq
        3
    0ZXYDDu796nVCFxq  
       2021-03-27 17:53:24 +08:00 via Android
    你看下 location 的匹配规则
    ^~ 表示匹配到之后,忽略其余 location 匹配
    不同匹配模式也有先后顺序
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5594 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 08:42 · PVG 16:42 · LAX 00:42 · JFK 03:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.