You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache维护模式rewrite规则无法放行指定IP地址问题咨询

问题根因

你的配置逻辑错误,IP白名单的判断条件被错误绑定到了维护目录放行规则上,现有规则的触发逻辑完全不符合需求:仅当非白名单IP访问维护目录时才放行,其他请求没有命中白名单判断,导致你自己访问也会被重定向到维护页。

正确的逻辑应该是先校验访问IP是否属于白名单,如果是就直接跳过所有维护相关的重定向规则。

修正后的配置

# Force HTTPS (建议把HTTPS强制规则放最前面,避免后续跳转走HTTP)
RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]

## Maintenance
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    # 白名单IP直接跳过所有维护重写规则
    RewriteCond %{REMOTE_ADDR} ^111\.111\.33\.44 [OR]
    RewriteCond %{REMOTE_ADDR} ^222\.222\.333\.444
    RewriteRule ^ - [L]

    # 放行维护目录、静态资源和维护页面,避免跳转死循环
    RewriteCond %{REQUEST_URI} ^/maintenance/ [OR]
    RewriteCond %{REQUEST_URI} \.(jpe?g?|png|gif|css|woff|woff2|eot|ttf|svg) [NC]
    RewriteRule .+ - [L]

    # 其余所有请求跳转到维护页
    RewriteRule ^(.*) /maintenance/maintenance.html [R=307,L]
</IfModule>

ErrorDocument 503 /maintenance/maintenance.html
ErrorDocument 307 /maintenance/maintenance.html

<IfModule mod_headers.c>
    # 禁用缓存避免维护页缓存影响后续正常访问
    Header Set Cache-Control "max-age=0, no-store"
</IfModule>
## End Maintenance

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php74” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php74 .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit

注意事项

  • 替换配置中的111.111.33.44、222.222.333.444为你真实的本地公网出口IP和服务器公网IP
  • 如果站点使用了CDN服务,%{REMOTE_ADDR}会获取到CDN节点IP而非真实访客IP,需要将对应参数替换为%{HTTP_X_FORWARDED_FOR}获取真实IP
  • 测试时使用浏览器无痕模式,避免307临时重定向缓存干扰测试结果

内容的提问来源于stack exchange,提问作者liquidRock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:39:03