使用.htaccess实现URL带子目录但显示根站内容(WordPress场景)
解决WordPress访问子目录展示根首页内容且地址栏不变的问题
针对你的需求——访问mydomain.com/directory时展示根目录首页内容,同时地址栏保持不变,且无需迁移站点到子目录,可以通过修改.htaccess文件实现,以下是具体方案:
核心规则配置
将以下Rewrite规则添加到WordPress默认Rewrite规则之前(顺序很重要,确保优先执行):
RewriteEngine On # 匹配 /directory 和 /directory/ 路径,转发到根首页,地址栏不变 RewriteRule ^directory/?$ /index.php [L,NC,QSA]
保留WordPress自带的Rewrite规则(通常在.htaccess文件下方):
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
规则说明
^directory/?$:精准匹配/directory和带斜杠的/directory/两种访问路径[L,NC,QSA]:L:标记为最后执行的规则,避免后续规则干扰NC:不区分大小写,兼容不同大小写的访问路径QSA:保留原请求的查询字符串(比如/directory?query=1这类参数会被传递到首页)
针对根URL的扩展处理
如果希望访问根域名mydomain.com时,也能自动映射到/directory路径(地址栏变为/directory,同时展示根首页内容),可以添加额外规则:
# 根URL跳转至 /directory,地址栏更新 RewriteRule ^$ /directory [R=301,L]
注意:这条规则要放在之前的directory转发规则之前,确保先跳转再转发内容。
注意事项
- 修改
.htaccess前请备份原文件,避免配置错误导致站点无法访问 - 清除WordPress缓存(如果使用了缓存插件)和浏览器缓存,确保规则立即生效
- 确认服务器已启用
mod_rewrite模块(WordPress通常依赖此模块,若未启用需联系主机商开启)
内容的提问来源于stack exchange,提问作者GarethWyn
相关产品推荐
相关产品推荐

