这是我需要做的 - 我需要我的服务器提供一组图像的两个版本。第一组图像是真实的PNG文件,它们位于我服务器上的文件夹中,称之为/realimages
。第二组图像实际上并不存在。当他们被请求时,我想要获取所请求的图像文件名,例如
https://example.com/nosuchimage/img1.png
通过坐落在/nosuchmage
文件夹内的index.php脚本生成图像(或者如果更容易的话,在其他地方生成)。
该脚本执行以下操作
/realimages
文件夹中获取相关图像该脚本已编写完整,功能齐全。我不知道的是如何强制所有PNG图像请求到/nosuchimage
文件夹被重定向到该脚本,原始请求作为脚本参数传递。
我知道这对NGINX来说是一个相对简单的配置问题,涉及编写重写规则。然而,NGINX重写对我来说仍然是一个黑色的艺术。希望有人能够告诉我重写规则应该是什么。
要重定向某个文件夹的所有图像,只需使用配置文件中的以下代码即可。
在我的情况下,我将使用默认文件。 /etc/nginx/sites-available/default
location ~ \/realimages/(.+\.png)$ {
return 302 $scheme://$server_name/nosuchimage/$1;
}
// Access: http://www.example.com/images/valdeirpsr.png (Exists & Redirect to /nosuchimage/valdeirpsr.png)
// Access: http://www.example.com/images/valdeirpsr2.png (Not Exists & Redirect to /nosuchimage/valdeirpsr2.png)
要仅重定向特定文件夹中未找到的图像,只需使用配置文件中的以下代码即可。
location ~ \/realimages/(.+\.png)$ {
error_page 404 $scheme://$server_name/nosuchimage/$1;
}
// Access: http://www.example.com/images/valdeirpsr.png (Exists & Show Image)
// Access: http://www.example.com/images/valdeirpsr2.png (Not Exists & Redirect to /nosuchimage/valdeirpsr2.png)