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

子目录htaccess配置非www跳转www丢失路径引发404问题求助

问题根因

  • 子目录.htaccess未显式开启RewriteEngine,重写规则默认不生效。同时mod_rewrite在子目录下运行时,默认会移除匹配路径的子目录前缀,你配置的^(.*)$仅能匹配到subdomain之后的路径内容,拼接域名后自然丢失了/subdomain/部分。
  • 根目录的HTTP转HTTPS规则优先级更高,默认先执行根目录重写规则,没有特殊配置的情况下子目录的跳转逻辑会被打乱。

修复方案

修改子目录/subdomain/.htaccess配置

替换现有配置为以下内容即可:

RewriteEngine On
# 声明当前规则的基础路径
RewriteBase /subdomain/

# 非www跳转www,保留完整路径
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/subdomain/$1 [R=301,L]

如果需要统一走HTTPS,可直接将跳转目标改为HTTPS协议,避免二次跳转:

RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/subdomain/$1 [R=301,L]

如果希望子目录规则优先于根目录规则执行,可在文件开头额外添加一行:

RewriteOptions InheritBefore

测试注意

301是永久重定向,会被浏览器长期缓存,修改配置后需要清空浏览器缓存或者使用无痕模式测试,避免旧缓存干扰测试结果。

额外优化建议

根目录的.htaccess中重复声明了两次RewriteEngine On,可以删除多余的一行,不影响功能但配置更规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:36:04