重写 URL 并使用这样的文件名 nginx 提供文件

重写 URL 并使用这样的文件名 nginx 提供文件

我有一个奇怪的任务,我不知道我是否可以完成它。

  1. Nginx 通过 url 获取请求
  2. Nginx 必须通过正则表达式从 URL 字符中删除
  3. 并且 Nginx 必须提供具有该名称的文件

例如:

要求/post/some-title/example-title

并且 Nginx 必须提供具有名称的文件postsometitleexampletitle

我想我应该用 rewrite 和 try_files 来完成它,但我不知道如何传递重写的 url 来提供具有该名称的文件。

我可以共同做吗?

答案1

您可以递归删除字符。例如:

location /post/ {
    rewrite ^(/post/.*)[-/](.*)$ $1$2 last;
    rewrite ^(/post)/(.*)$ $1$2 last;
}

第一次重写将循环最多 10 次,或者直到所有-/字符都被删除(除了后面的字符/post- 这样该location块就会不断重新输入)。第二次rewrite重写进行最终转换,由其他块处理location

相关内容