nginx - Nginx 重写本地文件路径
问题描述
是否有可能使这种 url 重写?
请求网址: https : //image.domain.com/listing/1_10_iP2LROSEafC01584630756.jpg 改写为: https ://image.domain.com/images/i/P/2/L/iP2LROSEafC01584630756.jpg
如果 /images/i/P/2/L/iP2LROSEafC01584630756.jpg 存在于服务器中,则提供服务,否则将查询重定向到 php 文件 /make_image.php
谢谢!
解决方案
请求网址:https : //image.domain.com/listing/1_10_iP2LROSEafC01584630756.jpg 改写为:https ://image.domain.com/images/i/P/2/L/iP2LROSEafC01584630756.jpg
如果您的意思是外部重定向,那么这是使用rewrite
指令实现的。将语句放在server
块中,或者放在location
处理这些类型请求的块中(即以 开头/listing/
和/或结尾的URI .jpg
)。
您的问题没有说明什么1_10_
意思,但让我们假设您希望忽略这两个任意数字。
例如:
rewrite ^/listing/\d+_\d+_(.)(.)(.)(.)(.*)$ /images/$1/$2/$3/$4/$5 permanent;
有关详细信息,请参阅此文档。
如果 /images/i/P/2/L/iP2LROSEafC01584630756.jpg 存在于服务器中,则提供服务,否则将查询重定向到 php 文件 /make_image.php
这是通过使用块中的try_files
语句来实现的,该语句location
处理以 . 开头的 URI 请求/images/
。
例如:
location /images/ {
try_files $uri /make_image.php;
}
有关详细信息,请参阅此文档。
推荐阅读
- c# - XUnit Mock 没有像我期望的那样抛出异常
- reactjs - 使用 React 时 Vs 代码在 UI 中显示红色和黄色
- pentaho - 有没有一种方法可以通过脚本将 PDI 作业和转换从版本 6 升级到 9
- postgresql - Windows 的实际 PostgreSQL 下载 URL 是什么?
- angular - 离子存储不能与多个服务一起使用
- reactjs - 在渲染期间而不是在 useEffect 中更改 ref 的值是否安全?
- python - 对数据框中的列求和,其中列名类似于字符串,并输出到新列
- typescript - 定义 1...n 个字符串模板类型的通用交集类型
- ios - Swift 5-如何将资产文件夹中的图像放入 JSON 文件并加载到 viewcontroller
- entity-framework - 无法翻译具有可为空值的 Linq 语句