![多次重写 nginx](https://linux22.com/image/564173/%E5%A4%9A%E6%AC%A1%E9%87%8D%E5%86%99%20nginx.png)
我目前已将我的视频页面的 URL 重写如下
rewrite ^/watch/(.*) /video.php?vid_id=$1 last;
这使得 URL 看起来像
www.site.com/watch/123456
代替
www.site.com/video.php?vid_id=123456
我希望能够像这样在 URL 中添加标题,而不会影响上述 URL 的位置和当前行为
www.site.com/watch/123456/vid-title
但是,我还希望能够仍然使用www.site.com/watch/123456
或 www.site.com/watch/123456/ 来访问我的视频,从而相当于我的原始 URL(URL 具有灵活性)。有人知道如何使用 NGINX 做到这一点吗?我需要多次重写吗?我尝试过多次重写的组合,但没有成功。我在许多网站上看到过这种做法,但不确定他们是如何做到的。
答案1
尝试这个:
rewrite ^/watch/([^/]+)/?(?:vid-title)?$ /video.php?vid_id=$1 last;
([^/]+)
匹配任意数量的字符,但不匹配斜线。您可以([0-9]+)
根据需要使用。- 问题掩码
?
使得前面的正则表达式是可选的。 ?:
告诉正则表达式引擎该组不应创建反向引用