使用.htaccess实现带URL子目录的子域名重定向问题
解决子域名带子目录重定向404问题
问题核心
当前配置的子域名重定向规则仅在访问根路径时生效,访问subdomain.mysite.com.br/demo1这类子路径时返回404,即便将规则移至.htaccess顶部也无法解决。
可行解决方案
1. 优化重定向规则
原规则未做循环拦截,且匹配范围不够严谨,可修改为:
RewriteEngine On # 精准匹配目标子域名,排除已指向目标路径的请求,避免循环重定向 RewriteCond %{HTTP_HOST} ^subdomain\.mysite\.com\.br$ [NC] RewriteCond %{REQUEST_URI} !^/subdomain/ RewriteRule ^(.*)$ https://mysite.com.br/subdomain/$1 [R=301,L,NC,QSA]
- 新增
RewriteCond %{REQUEST_URI} !^/subdomain/:防止重定向后再次触发规则,避免循环 - 使用
^和$精准匹配子域名,避免误匹配其他相似域名 R=301明确指定永久重定向,若需临时测试可改为R=302
2. 验证目标路径的物理存在
确认服务器上mysite.com.br/subdomain/demo1对应的物理目录或文件真实存在,404错误可能是目标路径本身不存在导致,而非重定向规则问题。
3. 排查W3总缓存(W3TC)干扰
W3总缓存的页面缓存、静态资源重写规则可能拦截子路径请求:
- 临时禁用W3总缓存测试,若问题消失,需在插件设置的「页面缓存」「浏览器缓存」模块中,排除子域名相关的URL规则
- 清空插件缓存后重新测试
4. 刷新WordPress固定链接规则
若主站基于WordPress搭建,固定链接的规则缓存可能影响子路径解析:
- 进入WordPress后台「设置-固定链接」,无需修改设置,直接点击「保存更改」刷新规则
内容的提问来源于stack exchange,提问作者Dilon Henrique
相关产品推荐
相关产品推荐

