从 nginx 位置匹配中排除单个文件

从 nginx 位置匹配中排除单个文件

我在 nginx 上有一个这样的位置:

location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
 return 403;
 error_page 403 /403_error.html;
}

css我有一个合并文件的 php 脚本js,并且此规则不会返回合并的 css 或 js 文件。

有没有办法忽略一个 php 文件的这条规则:

 /media/plg_jchoptimize/assets2/jscss.php

对于所有其他文件,我希望它能起作用。

答案1

您可以改用这个匹配的正则表达式:

(images|cache|media(?!\/plg_jchoptimize)|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$

这部分:

media(?!\/plg_jchoptimize)

匹配 media 除非紧接着 /plg_jchoptimize

相关内容