You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel5.5下如何用.htaccess或routes.php实现单URL的301重定向?

故障原因

你原先的.htaccess规则不生效通常有两个核心原因:

  • 规则放置顺序错误:Laravel默认的.htaccess存在前端控制器转发规则,所有请求会被优先转发到public/index.php处理,若你的重定向规则写在该段规则之后,会直接被跳过不会触发
  • 规则写法不规范:Redirect指令的目标地址如果是绝对路径必须带http:///https://协议头,否则会被识别为相对路径,导致跳转路径异常
解决方案

提供两种适配Laravel 5.5的实现方式,按需选择即可:

方案1:修改.htaccess配置(性能更高,不经过Laravel内核处理)

打开项目public目录下的.htaccess文件,在RewriteEngine On行之后、Laravel默认的前端转发规则之前,添加如下规则:

RewriteRule ^es/services/?$ /es/servicios [L,R=301,NC]

参数说明:

  • ^es/services/?$ 精准匹配/es/services或/es/services/路径,不会误匹配带该前缀的其他子路径
  • L 表示命中该规则后不再执行后续重写规则,避免被后续Laravel默认规则覆盖
  • R=301 标识为永久重定向,测试阶段可以先改为R=302避免浏览器缓存错误规则
  • NC 为可选参数,标识匹配路径时不区分大小写

配置完成后清空浏览器缓存即可生效。

方案2:通过Laravel路由配置(易维护,无需修改服务器配置)

直接在routes/web.php中添加重定向路由即可,无需调整服务器配置:

Route::redirect('/es/services', '/es/servicios', 301);

如果你的多语言路由已经统一配置了es前缀组,也可以写在组内简化写法:

Route::prefix('es')->group(function () {
    Route::redirect('/services', '/servicios', 301);
    // 其余/es前缀的路由保持不变
});

内容的提问来源于stack exchange,提问作者rmontanodev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 21:45:02