我今天一直在努力了解 nginx 重写,并在这里阅读了几个问题/答案,并彻底阅读了我遇到的几个指南。
虽然大多数事情对我来说都很自然,但我只是没有掌握它,也许是因为我对任何形式的正则表达式都没有经验。
我有一个 download.php 脚本,它覆盖了我的 nginx 标头并强制浏览器使用“另存为”对话框执行下载,而不是打开一个新页面。
它工作得很好,但是我想对用户隐藏脚本本身的 url。
具体来说,我想更改此 URL:
http://www.example.com/scripts/download.php?id=http://www.example.com/images/0/1/fullsize/96698298450ca01a60875e_34.jpg
这样对用户来说,它只是显示为id
GET 参数:
http://www.example.com/images/0/1/fullsize/96698298450ca01a60875e_34.jpg
但对于我的生活,我似乎无法让它发挥作用。
希望有人能来救援。提前致谢。
编辑:
只是为了让我的问题更加清晰......理想的解决方案是让我能够在我的网络应用程序中拥有这样的链接:
http://www.example.com/images/0/1/fullsize/96698298450ca01a60875e_34.jpg?dl=1
让 nginx 发现它有一个 dl=1 并且在 /images/ 目录中,然后重写它以使用下载脚本:
http://www.example.com/scripts/download.php?id=http://www.example.com/images/0/1/fullsize/96698298450ca01a60875e_34.jpg
这样,当仅查看图像时,它们将通过脚本,并且仅当 dl=1 参数到位时,图像才被重写并通过脚本路由。