如何让 nginx 重新映射部分 URL 而不发送重定向?

如何让 nginx 重新映射部分 URL 而不发送重定向?

我在路径上有如下图片:

/0/1/2/3/4/01234/screenshots/1.jpg

访问它的 URL 如下:

/static/0/1/2/3/4/01234/screenshots/1.jpg

我希望它看起来像这样:

/0/1/2/3/4/01234/a-desc-of-the-picture/screenshots/1.jpg

或者类似的东西。目标是在 URL 中包含关键字以进行 SEO。

但想告诉 nginx 提供服务

/0/1/2/3/4/01234/screenshots/1.jpg

当他看到:

/0/1/2/3/4/01234/a-desc-of-the-picture/screenshots/1.jpg

我不希望它将用户重定向到正确的 URL,我只希望它在内部进行映射。

有可能吗?我该如何实现?

我见过类似的事情这里,但我找不到将其应用于我的情况的方法。如果能提供一些新手友好的功能就更好了。

答案1

假设您有一个可正则表达式的基本路径,您可以执行以下操作:

location ~ ^/static/(././././.....)/[^/]+/(.*)$ {
    alias /location/on/filesystem/$1/$2;
}

Nginx 的别名指令比 Apache 的同类产品更灵活。

相关内容