我几乎可以工作,只是不能把它弄到最后一寸。
我想做的是
https://example.com/ap/variable1/variable2/
然后转到
https://example.com/ap/index.php?server= $ 1和;公会= $ 16
其中变量是可选的。我现在拥有的是
location /ap/ {
rewrite "^/ap/(.*)/(.*)$" "/ap/index.php?server=$1&guild=$2" last;
}
这主要是有效的,如果我使用结束斜杠转到url它会使变量合为一个而没有它,它加载就好了。
如果我将规则更改为
location /ap/ {
rewrite "^/ap/(.*)/(.*)/$" "/ap/index.php?server=$1&guild=$2" last;
}
我在尝试转到第一个变量时得到404,有没有办法让我的蛋糕也吃掉它,我在这里缺少什么
答案 0 :(得分:0)
第一次捕获是贪婪的,这意味着它将捕获到最后/
的所有内容(而不是您想要的第一个/
)。您可以使用*?
代替*
来使捕获变得非贪婪。
但是如果捕获不是为了捕获/
,则应该使用[^/]
字符类。例如:
rewrite ^/ap/([^/]*)/([^/]*)/?$ /ap/index.php?server=$1&guild=$2 last;
尾随/
也已成为可选项。有关正则表达式的信息,请参阅this useful resource。