新闻中心
使用 .htaccess 正确配置 WordPress 子目录重定向与路径保留

本文详细阐述了如何通过修改 `.htaccess` 文件,将主域名流量精确重定向至 wordpress 子目录,并确保原始 url 路径的完整保留。教程涵盖了主域名根目录和子目录 `.htaccess` 文件的关键配置调整,特别是 `rewriterule` 中捕获组 `$1` 的应用,以及子目录 `rewritebase` 和 `rewriterule` 的正确设置,旨在解决重定向后路径丢失的问题。
理解重定向与路径保留的核心问题
在将网站从主域名(例如 example.com)重定向到其子目录(例如 example.com/fr)时,常见的挑战是确保所有子路径(如 example.com/path/to/page)在重定向后能够正确地映射到 example.com/fr/path/to/page,而不是简单地全部重定向到 example.com/fr/。这通常是由于 .htaccess 文件中的 RewriteRule 配置不当,未能正确捕获并传递原始请求的路径信息所致。此外,WordPress 在子目录中运行时,其内部重写规则也需要相应的调整。
主域名根目录 .htaccess 配置
主域名根目录下的 .htaccess 文件负责处理所有进入主域名的请求,并将其重定向到目标子目录。关键在于 RewriteRule 的设置,它必须能够捕获原始请求中的完整路径,并将其附加到新的重定向 URL 中。
原始配置(可能导致路径丢失): 如果您的主域名 .htaccess 文件中的重定向规则类似于以下形式,它将导致所有请求都被重定向到 https://example.com/fr/,而丢失原始路径:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.com/fr/ [L,R=301,NC]上述规则中,重定向目标 https://example.com/fr/ 缺少了对原始请求路径的引用,因此所有子路径都将被丢弃。
正确的配置方法: 为了保留路径,我们需要在 RewriteRule 中使用正则表达式的捕获组。^(.*)$ 会捕获请求 URI 的所有内容(除了域名部分),并将其存储在 $1 变量中。然后,我们可以在重定向目标 URL 中引用这个 $1,从而将原始路径附加到子目录 URL 之后。
请将主域名根目录下的 .htaccess 文件中的相关 RewriteRule 修改为:
RewriteEngine on
# 检查请求的主机是否为 example.com 或 www.example.com
RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
# 将所有请求(包括路径)301重定向到 https://example.com/fr/,并保留原始路径
RewriteRule ^(.*)$ https://example.com/fr/$1 [L,R=301,NC]
# 以下是标准的WordPress规则,请确保其保持不变,除非您有特殊需求
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress解释:
- RewriteRule ^(.*)$ https://example.com/fr/$1 [L,R=301,NC]:
- ^(.*)$:这是一个正则表达式,^ 匹配行的开始,.* 匹配任意字符零次或多次,$ 匹配行的结束。括号 () 创建了一个捕获组,它会捕获 .* 匹配到的所有内容,即原始请求的路径。
- $1:引用了第一个捕获组匹配到的内容。通过将其附加到重定向目标 URL,确保原始路径得以保留。
- L (Last):表示如果此规则匹配成功,则停止处理后续的重写规则。
- R=301 (Redirect=301):表示执行一个永久性(301)外部重定向。
- NC (No Case):表示不区分大小写。
通过此修改,例如 example.com/about 将被正确重定向到 https://example.com/fr/about。
Playground AI
AI图片生成和修图
99
查看详情
子目录 .htaccess 配置
当 WordPress 安装在子目录(例如 /fr/)中时,其自身的 .htaccess 文件也需要进行调整,以确保 WordPress 能够正确解析其内部链接和固定链接结构。最主要的变化是 RewriteBase 指令,它需要反映 WordPress 实际所在的子目录路径。
原始子目录配置(可能导致问题): 标准的 WordPress .htaccess 规则在根目录下运行时是有效的,但在子目录中,RewriteBase / 和 RewriteRule . /index.php [L] 会导致 WordPress 无法正确找到其资源或处理请求。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress正确的配置方法: 在 /fr/ 子目录下的 .htaccess 文件中,您需要修改 RewriteBase 和主 RewriteRule,使其指向 /fr/ 路径。
请将 /fr/ 目录下的 .htaccess 文件修改为:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# 将 RewriteBase 修改为子目录的路径
RewriteBase /fr/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 将主 RewriteRule 的目标路径修改为子目录的 index.php
RewriteRule . /fr/index.php [L]
</IfModule>
# END WordPress解释:
- RewriteBase /fr/:明确告诉 Apache,所有后续的重写规则都应该相对于 /fr/ 路径来解析。这是确保 WordPress 在子目录中正确处理 URL 的关键。
- RewriteRule . /fr/index.php [L]:确保所有不直
接对应文件或目录的请求都被内部重写到 /fr/index.php,由 WordPress 进一步处理。
注意事项
- 备份文件: 在进行任何 .htaccess 文件修改之前,务必备份原始文件。错误的配置可能导致网站无法访问。
- 清除缓存: 301 重定向会被浏览器和 CDN 缓存。修改后,请务必清除浏览器缓存、CDN 缓存(如果使用)以及服务器端缓存(如 Nginx FastCGI 缓存),以确保新的重定向规则生效。可以使用匿名模式或不同的浏览器进行测试。
- WordPress 固定链接: 在完成 .htaccess 配置后,登录 WordPress 后台,导航到“设置” -> “固定链接”,无需进行任何修改,直接点击“保存更改”按钮。这会刷新 WordPress 的重写规则,确保其与新的环境兼容。
- 测试: 彻底测试网站的各个页面和功能,确保所有链接都正确重定向并正常工作,特别是深层链接和静态资源。
- 优先级: 服务器通常会优先处理根目录的 .htaccess 文件,然后是子目录的。了解这个处理顺序有助于调试。
总结
通过对主域名根目录和 WordPress 子目录中的 .htaccess 文件进行精确配置,我们可以实现无缝且路径完整的重定向。关键在于主目录 RewriteRule 中对 $1 捕获组的正确使用,以及子目录 RewriteBase 和 WordPress 核心 RewriteRule 的相应调整。遵循这些步骤并进行充分测试,将确保您的 WordPress 网站在子目录中稳定运行,并提供一致的用户体验。
以上就是使用 .htaccess 正确配置 WordPress 子目录重定向与路径保留的详细内容,更多请关注php中文网其它相关文章!
# 上传
# 关键词优化排名厾必在周o斯擅长
# 淘宝seo优化策略
# 网站建设名林科技
# 公司怎么优化网站
# 闵行区网站推广
# 孝感网站建设有哪些企业
# 色www亚洲免费seo
# 芜湖网站优化推荐哪家好
# 工厂营销推广视频怎么剪
# 信阳ai关键词排名技术技巧
# 关键在于
# 所有内容
# 请将
# 将被
# php
# 目录中
# 您的
# 重写
# 重定向
# red
# cdn
# access
# 浏览器
# nginx
# wordpress
# apache
# 正则表达式
# word
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
文心一言怎样用插件调度API数据_文心一言用插件调度API数据【API调用】
React项目中导航栏Logo自适应布局:避免裁剪与布局溢出
Mac怎么查看崩溃日志_Mac控制台错误报告分析
三星ZFold5多任务卡顿_Samsung ZFold5流畅度提升
Node.js CSV 数据处理:基于字段值条件过滤整条记录的策略
PHP中高效并行检查多链接状态的教程
谷歌学术网站直达地址 谷歌学术搜索网页版一键进入
c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架
c++如何实现一个简单的ECS框架_c++数据驱动设计与游戏开发
蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台
汽车之家官方网站官网入口_汽车之家网页版直接进入
J*aScript教程:根据元素文本内容动态设置背景色
苹果手机如何防止被恶意App追踪
夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案
写好的html代码怎么运行出来_运行写好的html代码方法【教程】
c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换
曝R星经典之作开发图 设计简陋但信息密集!
Composer如何解决json扩展缺失的错误
微信聊天记录怎么加密_微信聊天记录加密方法
优化大型XML文件解析:基于Python流式处理的内存高效方案
c++ 获取系统当前时间 c++时间戳获取方法
Go语言中Map值调用指针接收器方法的限制与应对
Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践
C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果
58动漫网在线官方网 58动漫网正版动漫入口网址
解决Bootstrap卡片顶部边距导致背景图下移的问题
QQ邮箱登录平台入口 QQ邮箱网页版邮箱官方入口
php源码怎么在电脑上测试_电脑测试php源码方法步骤【教程】
QQ官网正版登录链接 QQ在线登录入口最新
Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】
excel怎么制作工资条 excel快速生成工资条的方法
Golang如何实现状态模式管理对象状态_Golang State模式实现技巧
树莓派传感器触发:通过Twilio API发送WhatsApp消息教程
QQ邮箱网页版入口 QQ邮箱官方邮箱登录通道
J*aScript类型检查_j*ascript代码规范
vivo浏览器自带的下载器速度慢怎么办 vivo浏览器提升文件下载速度的技巧
J*aScript实现动态背景色下的文本与按钮颜色自适应调整
谷歌邮箱注册显示错误Gmail服务器异常与延迟处理
J*a递归快速排序中静态变量的状态管理与陷阱
快手赚钱渠道_快手收益来源
小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】
qq游戏大厅官方下载_qq游戏免费下载安装入口
Android Studio计算器C键功能异常排查与修复教程
Win11 BitLocker密码忘了怎么办 Win11找回BitLocker恢复密钥方法【解决】
为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法
包子漫画官方网站在线链接-包子漫画在线阅读平台主页地址
马斯克:Optimus 人形机器人复数形式为 Optimi
Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址
免费抖音短视频入口_抖音网页版短视频免费通道
微信网页版登录教程_微信网页版登录入口在哪


2025-11-29
浏览次数:次
返回列表
接对应文件或目录的请求都被内部重写到 /fr/index.php,由 WordPress 进一步处理。