如何阻止子目录首页跟随根域名重定向?
解决根域名跳转导致子目录首页异常的问题
听起来你遇到的是典型的跳转规则覆盖子目录请求的问题——根域名的跳转规则没有区分「根目录请求」和「子目录首页请求」,导致访问/blog这种子目录首页时,被根的跳转规则截胡了,但/blog/contact这种带具体路径的请求因为规则没匹配到,所以能正常加载子目录的内容。
下面分两种常见场景给你解决方案:
一、如果是用.htaccess配置的根域名跳转
假设你原来的根目录.htaccess里的跳转规则是类似这样的(会匹配所有请求):
RewriteEngine On RewriteRule ^(.*)$ https://目标域名/$1 [R=301,L]
你需要修改规则,先排除所有子目录的请求,再执行根域名的跳转:
RewriteEngine On # 逐个排除需要保留的子目录,每个子目录加一行RewriteCond RewriteCond %{REQUEST_URI} !^/blog/ RewriteCond %{REQUEST_URI} !^/其他子目录名/ # 只对根目录的请求执行跳转(如果根下还有单独页面需要跳转,看下面注释) RewriteRule ^$ https://目标域名/ [R=301,L] # 如果你需要根域名下的其他独立页面(比如/about)也跳转,但不影响子目录,用这条替换上面的RewriteRule: # RewriteRule ^((?!blog|其他子目录名).*)$ https://目标域名/$1 [R=301,L]
同时要确保每个子目录(比如/blog)里的WordPress.htaccess配置正常,应该是这样的:
RewriteEngine On RewriteBase /blog/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L]
二、如果是通过主机面板(比如cPanel)设置的跳转
很多主机面板的「重定向」功能默认会跳转整个站点的所有路径,你需要调整设置:
- 找到面板里的「重定向」工具
- 选择「仅重定向根域名」(而不是「重定向所有请求到目标域名」)
- 确认保存后,只有访问根域名
flippinghousesforrookies.com时才会跳转,子目录的请求会正常加载自身内容
最后注意事项
- 测试前一定要清除浏览器缓存,或者用隐私窗口测试——301永久跳转的缓存会让你看不到修改后的效果
- 检查子目录的文件权限,确保
index.php和.htaccess的权限是服务器能正常读取的(一般是644)
内容的提问来源于stack exchange,提问作者Emma
相关产品推荐
相关产品推荐

