nginx 重写特定文件

nginx 重写特定文件

我在使用 nginx 将两个文件从位置 A 重定向到位置 B 时遇到了一个小问题。这些文件位于文件夹 folderA 中,现在我想从 folderB 中提供它们。不幸的是,有些用户知道直接 URL,所以我必须 a) 将 folderA 重定向到 folderB,然后对相关文件执行相同操作。

我正在使用以下内容:

location /folderA {
    rewrite ^ http://www.example.com/folderB/ permanent;
}

这对于文件夹重定向来说很好用。为了满足文件的需求,我找不到适合我的东西,所以我创建了一个小型 php 脚本,它将接收 aq 变量,然后执行重定向。即:

location /folderA {
    try_files $uri $uri/ folderB/process.php?q=$uri&$args;
}

不幸的是,这不起作用。当请求文件夹时,将调用 process.php。但是,当请求直接针对文件(例如 abc.pdf)时,它不会得到处理,并且会记录在错误日志中。

我原以为所有请求最终都会由 process.php 处理,但显然我错了。

任何指点都将不胜感激。

谢谢你!

答案1

您可以尝试以下操作:

location ~* ^/folderA/.*$ {
    rewrite ^/folderA/$ http://www.example.com/folderB/ permanent;
    try_files $uri $uri/ /folderB/process.php?q=$uri&$args;
}

如果不起作用,错误日志可以提供帮助。还请记住,行try_files使用$uri包含文件夹名称的。因此,try_files在这种情况下abc.pdf/foderA/abc.pdf

相关内容