检查子目录中是否存在文件

时间:2018-04-12 09:39:11

标签: apache mod-rewrite

我有一个包含Rewrite的包含文件,用于检查信号量文件是否存在,如果没有显示维护页面。

RewriteCond %{DOCUMENT_ROOT}/maintenance.enable -f
RewriteCond %{REQUEST_URI} !/maintenance.html
RewriteRule ^/ http://mydomain/maintenance.html  [L]

通常它可以工作,但我现在有一个VirtualHost,有几个应用程序在不同的上下文根处回答:

  • MYDOMAIN / app1的
  • MYDOMAIN / APP2

如果我更改每个应用程序的规则正在运行..但由于应用程序的数量已经很多,并且可能会增加,我需要为所有人创建一个规则,类似这样,其中xxx可以是任何:

<Location /xxx>
RewriteCond %{DOCUMENT_ROOT}/xxx/maintenance.enable -f
RewriteCond %{REQUEST_URI} !/maintenance.html
RewriteRule ^/ http://mydomain/maintenance.html  [L]
</Location>

PS。我正在使用最新的apache 2.4版本

1 个答案:

答案 0 :(得分:0)

我找到了一个类似于我最初使用像这样的宏的解决方案:

 <Macro check_maintenance $context>
 RewriteCond %{DOCUMENT_ROOT}/$context/maintenance.enable -f
 RewriteCond %{REQUEST_URI} !/maintenance.html
 RewriteRule ^/ http://mydomain/maintenance.html  [L]
 </Macro>

在位置指令外添加的vhost配置中:

 use check_maintenance app1
 use check_maintenance app2