nginx重写特定的文件

我有一个小问题,使用nginx将两个文件从位置Aredirect到位置B. 这些文件在一个文件夹folderA,现在我想他们从folderB服务。 不幸的是,有些用户知道直接的URL,所以我必须a)redirectfolderA到folderB,然后做相同的相关文件。

我正在使用以下内容:

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

这对文件夹redirect工作正常。 为了也照顾的文件,我找不到任何适合我,所以我创build了一个小的PHP脚本,将接收一个variables,然后执行redirect。 即:

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

不幸的是,这是行不通的。 当一个请求去的文件夹,process.php被调用。 然而,当一个请求直接来自一个文件(比如说abc.pdf)时,它不会被提供,并且会被logging在错误日志中。

我的印象是,所有的请求实际上最终会被process.php处理,但显然我错了。

任何指针将不胜感激。

谢谢!

你可以试试这个:

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

如果它不起作用,错误日志可以在这里帮助。 另请注意, try_files行使用包含文件夹名称的$uri 。 所以abc.pdftry_files/foderA/abc.pdf