我有一个奇怪的任务,我不知道我是否可以完成它。
- Nginx 通过 url 获取请求
- Nginx 必须通过正则表达式从 URL 字符中删除
- 并且 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
。