Apache服务器PHP应用503维护配置:排除静态资源但拦截PHP文件
Apache 503维护页配置:排除静态资源但拦截PHP文件
直接使用以下配置即可实现需求,既放行Apache托管的静态资源,又拦截所有PHP相关请求(包括直接访问PHP文件和带路径的动态请求如https://example.com/index.php/foobar):
RewriteEngine On # 拦截非静态资源:要么请求的文件不存在,要么是PHP文件 RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} \.php$ RewriteRule ^ /maintenance.html [R=503,L] ErrorDocument 503 /maintenance.html
规则说明
RewriteCond %{REQUEST_FILENAME} !-f:匹配不存在的文件路径,对应index.php/foobar这类动态路由(实际文件系统中不存在该路径,但会被PHP解析)RewriteCond %{REQUEST_FILENAME} \.php$:匹配真实存在的PHP文件(如index.php本身)[OR]逻辑连接符:满足两个条件中的任意一个,就触发后续的503重写- 存在的非PHP静态资源(如
.css、.js、.png等)会同时不满足两个条件,因此不会被拦截,正常访问
注意事项
- 确保网站配置中已开启
RewriteEngine On,如果之前没加,必须补上 - 确认
maintenance.html文件位于网站根目录,若放在子目录需调整路径(如/static/maintenance.html) - 若有其他Rewrite规则,将这条维护规则放在最顶部,保证优先执行
内容的提问来源于stack exchange,提问作者fritzmg
相关产品推荐
相关产品推荐

