NGINX 在匹配部分位置时出现问题

NGINX issues when matching partial location

我是 NGINX 世界的新手,正在努力学习。

我要匹配:

但不是

或除前 2 场比赛之外的任何其他比赛

如果我使用 location ^~ /mypage {} 它也匹配 /mypagewebsite 并且我试图避免 2 完全匹配的块,例如 location = /mypage {}location = /mypage.php {}

如何只匹配前 2 个位置而不匹配其他位置?

您可以使用正则表达式 (regex) 来做到这一点。

location ~ ^/mypage(?:\.php)?$ 

说明

  • ~ - Tells nginx that we are using regex
  • ^ - 标记字符串的开始(uri 必须从此时开始)
  • () - 括号用于分组
  • ?: - 这些符号意味着 nginx 不应该记住括号内的内容
  • ? - 表示整个组 (.php) optional
  • $ - 表示字符串结束(uri 必须在这里结束)

您可以使用在线工具来创建和检查您的正则表达式。例如,this one.