多次重写 nginx

多次重写 nginx

我目前已将我的视频页面的 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]+)根据需要使用。
  • 问题掩码?使得前面的正则表达式是可选的。
  • ?:告诉正则表达式引擎该组不应创建反向引用

相关内容