如何使用 .htaccess 实现根路径及多语言子路径的精准重定向-php教程

本文详解如何通过 apache 的 mod_rewrite 模块,利用 .htaccess 文件将站点根目录(/)及所有形如 `/en2`、`/en100` 的非 `/en1` 语言子路径,统一、安全地 302 重定向至标准入口 `/en1`,避免 404 错误与循环跳转。

在实际 Web 部署中,常需将多个相似语义但非标准的 URL 统一导向唯一权威入口——例如强制所有 example.com/、example.com/en2、example.com/en99 等请求,全部重定向至 example.com/en1(该路径对应真实存在的 index.php 入口)。单纯依赖 PHP 层判断(如 strpos($_SERVER[‘REQUEST_URI’], “en1”) === false)存在严重缺陷:它仅在 PHP 脚本被成功加载后才执行,而 /en2 等路径若未配置路由或物理文件,Apache 会直接返回 404,根本无法触发 PHP 逻辑;同理,RedirectMatch 和简单 RewriteRule 组合因缺乏条件判断与精确锚点匹配,易导致规则冲突或重定向失效。

正确方案应完全交由 Apache 在请求处理早期阶段(即内容分发前)完成重定向,确保零 PHP 依赖、高可靠性与低延迟。以下是推荐的 .htaccess 配置:

RewriteEngine On

# 规则1:将根路径 / 重定向至 https://example.com/en1(含协议+域名,避免相对路径歧义)
RewriteRule ^$ https://example.com/en1 [R=302,L]

# 规则2:匹配所有以 "en" 开头、后接一个或多个数字的路径(如 /en2、/en100),但排除 /en1 本身
RewriteCond %{REQUEST_URI} !^/en1$  # 注意:此处必须用 ^/en1$ 精确匹配完整路径
RewriteRule ^en[0-9]+/?$ https://example.com/en1 [R=302,L]

✅ 关键说明:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » 如何使用 .htaccess 实现根路径及多语言子路径的精准重定向-php教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4027781+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4027781+
  • 本周更新: 0+
  • 最后更新: 2026-03-16