Nginx重写的URL必须有破折号

Nginx重写的URL必须有破折号,nginx,url-rewriting,Nginx,Url Rewriting,此选项允许扩展名为.html且不包含斜杠的所有内容: rewrite ^/([^/]+).html$ ... 我需要添加另一个陷阱:URL必须至少包含一个破折号,然后才能重写 如何做到这一点?只需使用逻辑即可。至少有一个破折号的单词可以表示为两个中间有破折号的单词。因此,解决方案很简单: rewrite ^/([^/]+-[^/]+)\.html$. 此外,您忘记转义点(),因此您的regexp也与url/somesstrangehtml重写^/([^/]+-[^/]+)\.html$匹配。

此选项允许扩展名为.html且不包含斜杠的所有内容:

rewrite ^/([^/]+).html$ ...
我需要添加另一个陷阱:URL必须至少包含一个破折号,然后才能重写


如何做到这一点?

只需使用逻辑即可。至少有一个破折号的单词可以表示为两个中间有破折号的单词。因此,解决方案很简单:

rewrite ^/([^/]+-[^/]+)\.html$.

此外,您忘记转义点(
),因此您的regexp也与url
/somesstrangehtml

重写^/([^/]+-[^/]+)\.html$
匹配。你还忘了逃出dot(
)@alexeyten谢谢你,它很管用。但是当你写评论时,我如何为你添加帮助点呢?