Mod rewrite NGINX重写条件问题

Mod rewrite NGINX重写条件问题,mod-rewrite,nginx,url-rewriting,rewrite,nginx-location,Mod Rewrite,Nginx,Url Rewriting,Rewrite,Nginx Location,我在nginx服务器上有一个位置,如/folder/。该文件夹中有.jpg文件和.php脚本 我正在努力实现以下目标: 当用户访问url时,如:nginx将搜索10-11文件、10-11.png文件、10-11.jpg文件并显示它(如果文件在服务器上)。这个部分很好用 现在,当用户访问相同的url时,如果文件不存在,我希望用户重定向到该php脚本 下面是nginx配置的一部分。该文件夹中的所有图像文件类似于10-10、21-19、90-20等(2位数-2位数) 另一个nginx部分应该如下所示:

我在nginx服务器上有一个位置,如/folder/。该文件夹中有.jpg文件和.php脚本

我正在努力实现以下目标:

当用户访问url时,如:nginx将搜索10-11文件、10-11.png文件、10-11.jpg文件并显示它(如果文件在服务器上)。这个部分很好用

现在,当用户访问相同的url时,如果文件不存在,我希望用户重定向到该php脚本

下面是nginx配置的一部分。该文件夹中的所有图像文件类似于10-10、21-19、90-20等(2位数-2位数)

另一个nginx部分应该如下所示:

location /app/comics/lqthumb/ {
        rewrite ^/app/comics/lqthumb/(.*?)-(.*?)$ /app/comics/lqthumb/thumbgen.php?chapter=$1&page=$2 permanent;
    }
理想的做法是将这一规则结合在一起。我如何做if-else语句或类似的语句?我尝试了几种组合,阅读了很多论坛帖子,甚至是这里的答案,但我无法让它工作


如果你有问题,请让我知道

您可以使用命名位置来组合这些。
try\u files
的最后一个元素可以调用默认操作来输入指定位置以处理重写

root /path/to/root;

location /app/comics/lqthumb {
    try_files $uri $uri.png $uri.jpg @thumbgen;
}
location @thumbgen {
    rewrite ^/app/comics/lqthumb/(.*?)-(.*?)$ /app/comics/lqthumb/thumbgen.php?chapter=$1&page=$2;
}
location ~ \.php$ { ... }
我已删除您在
$uri
之前放置的伪
/
。我假设您有一个调用PHP解释器的位置,否则,您可以将这些指令放入指定的位置。我不确定您是否打算将重定向设置为永久性的。在没有标记的情况下,对用户透明地执行内部重定向


瞧。

非常感谢你。我很接近,但我做错了什么。我在位置的末尾添加了一个/,然后在@thumbgen之后添加了一个=404,在$uri之前添加了一个/。也许这就是问题所在!
root /path/to/root;

location /app/comics/lqthumb {
    try_files $uri $uri.png $uri.jpg @thumbgen;
}
location @thumbgen {
    rewrite ^/app/comics/lqthumb/(.*?)-(.*?)$ /app/comics/lqthumb/thumbgen.php?chapter=$1&page=$2;
}
location ~ \.php$ { ... }