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

如何配置.htaccess在域名根目录/子目录部署两站并解决子站加载不全

故障根因

PHP应用部署在/web-2子目录时,现有.htaccess完全是按根目录部署的规则编写的,三个核心问题直接导致站点加载异常:

  • 缺少子目录重写基准路径配置,重写规则会把请求错误转发到域名根目录,而不是web-2目录下的入口文件
  • 末尾斜杠重定向逻辑没有适配子目录,会把带斜杠的子目录路径错误跳转到根域名对应路径
  • 静态资源拦截规则不全,漏了woff2、ico、map等常用静态后缀,这部分资源会被错误交给PHP解析,直接返回404或者错误响应
修复方案

直接用下面的配置替换web-2目录下原有的.htaccess文件即可:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews -Indexes
</IfModule>

RewriteEngine On
# 子目录部署必须配置重写基准路径,否则所有重写规则都会错位
RewriteBase /web-2/

# 强制HTTPS跳转,需要时取消下面两行注释即可
# RewriteCond %{HTTPS} !=on    
# RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 透传Authorization请求头,避免接口鉴权失效
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# 修正末尾斜杠跳转逻辑,避免跳转到根目录路径
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# 补全静态资源后缀匹配,所有静态资源直接返回,不走PHP解析
RewriteCond %{REQUEST_URI} !\.(css|js|svg|png|jpg|jpeg|gif|ico|robots\.txt|ttf|woff|woff2|eot|map|json)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# 明确指定重写到当前子目录下的入口文件
RewriteRule ^ /web-2/index.php [L]
</IfModule>
替换后仍异常的排查项

如果替换配置后站点还是无法完整加载,按顺序检查:

  • 确认Apache已经开启mod_rewrite模块,未开启的话执行a2enmod rewrite && systemctl restart apache2生效
  • 检查web-2目录的权限配置,确保web服务运行用户对该目录有读取、执行权限,和根目录下静态站点的权限保持一致即可
  • 检查PHP应用自身的配置项,把应用的根URL从domain.com修改为domain.com/web-2,避免应用内生成的资源链接、路由地址指向根目录
  • 如果是Nginx反向代理Apache的架构,确认Nginx转发请求时没有去掉/web-2路径前缀,要把完整请求URI传递给后端Apache

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:01:08