仅在第一次出现时重写匹配

时间:2016-11-20 07:23:16

标签: nginx url-rewriting

我希望我的重写规则只捕获第一个匹配并忽略其余的

当前行为

https://example.com/oliver.stack => oliver
https://example.com/oliver.stackoliver.stack => oliver.stackoliver

期望的行为

https://example.com/oliver.stack => oliver
https://example.com/oliver.stackoliver.stack => oliver

Nginx重写规则

location ~ .stack$ {
        rewrite ^/(.*).stack$ /vid.php?v=$1;
    }

1 个答案:

答案 0 :(得分:1)

stack$将匹配" stack" 在该行的末尾(最终$)。而且,.*是贪婪的:它会尝试匹配最长的字符串。 .*?是非贪婪的版本:

rewrite ^/(.*?)\.stack /vid.php?v=$1;