regex - 删除 nginx 中的第一个文件夹
问题描述
我有一些网址,例如:
http://example.com/username/file.zip
http://example.com/username/videos/aaa.avi
http://example.com/username/videos/abc/asdfdef/aaa.avi
文件的真实路径是:
/file.zip
/videos/aaa.avi
/videos/abc/asdfdef/aaa.avi
所以基本上我需要删除我尝试使用此重写规则的 URL 中的第一个文件夹:
rewrite ^/.*/(.*)$ /$1 last;
但它删除了所有文件夹并 grep 只是文件名,它只适用于第一个 URL,其余的我得到 404 错误
- PS:用户名可以是任何东西
解决方案
我没有测试它,但基于我认为 nginx 使用 pcre 库
rewrite ^/.*?/(.*)$ /$1 last;
会工作。
.*?
匹配零和无限次之间的任何字符,尽可能少,根据需要扩展(惰性)
推荐阅读
- javascript - 如何在挂载的函数中调用方法的函数
- javascript - 未捕获的类型错误:无法读取未定义的属性“下一个”
- google-bigquery - BigQuery 到 BigQuery 数据流
- laravel - Laravel 没有执行预定的命令
- c++ - 32位应用程序运行64位注册表(带有WOW6432Node)
- c++ - 检查向量是否包含已输入值的对象
- python - Python:遍历字符串中的 unicode 字符
- reactjs - Gatsby 导航返回 404 页面
- c# - 缺少方法 'instance void MYDLLNAME ADODB.Fields...'
- r - 将树中的最终节点相乘