• 请不要在回答技术问题时复制粘贴 AI 生成的内容
beixun
V2EX  ›  程序员

一个正则问题的请教

  •  
  •   beixun · Mar 27, 2021 · 2026 views
    This topic created in 1873 days ago, the information mentioned may be changed or developed.

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

    要求是这样的,如:

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

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

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

    location ~* /users/self/* {
    	deny all;
    	return 403;	
    }
    //这样子是全部禁止访问了,需要取反,还不能影响其他路径
    
    3 replies    2021-03-27 17:53:24 +08:00
    0ZXYDDu796nVCFxq
        1
    0ZXYDDu796nVCFxq  
       Mar 27, 2021 via Android
    location ^~ /user/self/
    location /user/ {deny all; }
    beixun
        2
    beixun  
    OP
       Mar 27, 2021
    @gstqc 我一直在想两个条件的表达式,怎么取交集...
    nginx 不太熟,没想到可以写两个,谢谢老哥了哈哈
    0ZXYDDu796nVCFxq
        3
    0ZXYDDu796nVCFxq  
       Mar 27, 2021 via Android
    你看下 location 的匹配规则
    ^~ 表示匹配到之后,忽略其余 location 匹配
    不同匹配模式也有先后顺序
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5752 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 03:38 · PVG 11:38 · LAX 20:38 · JFK 23:38
    ♥ Do have faith in what you're doing.