Mod rewrite 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部分应该如下所示: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部分应该如下所示:
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$ { ... }