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

使用PHP与.htaccess搭建维护页配置IP限制后静态资源加载失败如何解决

问题原因

  • 静态资源放行规则正则语法错误:你写的RewriteCond %{REQUEST_URI} !^/pub/*.*$逻辑存在缺陷,*是正则量词不能单独匹配路径字符,该规则无法覆盖所有/pub/目录下的资源路径,导致静态资源请求被重定向到维护页,加载失败。
  • 维护页匹配规则错误:RewriteCond %{REQUEST_URI} !^/maintenance\$多了不必要的\$转义,实际会要求URI末尾包含$字符才能放行,无法正常匹配维护页面路径。
  • IP匹配规则不严谨:!^123.456.789没有对IP中的点做转义,正则中.默认是通配符,容易出现误匹配。
  • 规则顺序不合理:维护模式的全局重定向规则应该放在去PHP后缀规则之前,避免非白名单用户的请求被提前处理。
  • 重复冗余配置:不需要两次声明RewriteEngine On,全局声明一次即可。

修复后的配置

# 全局重写配置
RewriteEngine On
RewriteBase /

# 维护模式规则(放在最前面优先执行)
# 替换123.456.789.为你的实际IP段,IP中的点需要转义
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.
# 放行/pub/下所有静态资源,NC参数忽略大小写适配大写PUB目录
RewriteCond %{REQUEST_URI} !^/pub/ [NC]
# 放行维护页本身,避免循环重定向
RewriteCond %{REQUEST_URI} !^/maintenance$
RewriteRule ^(.*)$ http://example.com/maintenance [R=307,L]

# 去除.php后缀规则
Options +MultiViews
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

额外注意事项

  • 如果你的服务器是Linux系统,文件路径大小写敏感,建议把静态资源目录名统一为小写pub,或者确保页面中静态资源的引用路径和实际目录名大小写完全一致。
  • 测试前清空浏览器缓存,307重定向会被浏览器临时缓存,避免旧配置影响测试结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:18:02