NGINX定位重写URL,带或不带斜杠

5

目前我有这个位置块:

location = /events {
    rewrite ^ https://totallydifferenturl.com;
}

这段代码成功地将从mywebsite/events重定向,但我希望它还能处理mywebsite/events/

尝试使用location = /events/?并没有起作用。

1个回答

22
您需要使用~运算符来启用正则表达式匹配,并且由于您只需要将website/eventswebsite/events/作为完整字符串进行匹配,因此您需要在模式周围使用锚点^$

您需要使用~运算符来启用正则表达式匹配,并且由于您只需要将website/eventswebsite/events/作为完整字符串进行匹配,因此您需要在模式周围使用锚点^$

location ~ ^/events/?$
         ^ ^         ^ 

^/events/?$模式匹配:

  • ^ - 起始位置
  • /events - 文本串 /events
  • /? - 一个或零个符号/
  • $ - 结尾位置。

这是完美的。如果我忽略锚点,只使用/events/?,那会有什么影响呢?它是否也能匹配像website/random/events/query这样的内容? - robinnnnn
1
是的,它将匹配字符串中任何位置的“/events”或“/events/”。 - Wiktor Stribiżew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接