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

如何在Laravel项目.htaccess中配置主域名重定向且不影响域名别名访问

正确的.htaccess配置方案

旧配置失效的原因

你现有配置存在两个核心问题,直接导致规则不生效:

  • RewriteRule 默认匹配的是请求的URI路径(即域名之后的部分),无法直接匹配完整域名URL,你写的"^http://www.maindomain.com"永远不会命中任何请求
  • 没有单独判断请求的Host头,无法区分主域名和别名域名的请求

适配需求的完整配置

需要把自定义重定向规则放在Laravel默认重写规则的最前面(.htaccess规则从上到下顺序匹配生效),完整配置如下:

RewriteEngine On

# 自定义主域名重定向规则(置于最前端)
# 判断请求Host是否为主域名,NC参数表示不区分大小写
RewriteCond %{HTTP_HOST} ^www\.maindomain\.com$ [NC]
# 匹配主域名的所有请求,直接重定向到目标地址
# R=301表示永久重定向,L表示停止后续所有重写规则匹配
RewriteRule ^.*$ https://www.redirectedpage.com [R=301,L]

# 以下为Laravel默认请求转发规则,保持原有配置即可
# 非真实文件、目录的请求全部转发到入口文件index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

规则逻辑说明

  • 仅当请求Host为www.maindomain.com(无论走http还是https协议)时,才会触发重定向
  • Host为www.alias.maindomain.com的请求不会命中重定向条件,会直接走后面的Laravel正常处理流程,完全保留原有访问状态
  • 测试阶段可以先把R=301改成R=302临时重定向,避免浏览器缓存导致测试结果异常,确认生效后再换回301永久重定向

为什么不推荐用Laravel路由层实现

如果路由层实现未生效,通常是因为主域名的请求在进入Laravel入口前就已经被Web服务器的其他配置拦截,或者域名绑定规则未配置正确。直接在.htaccess最上层配置重定向规则,不依赖Laravel的业务逻辑加载,稳定性更高,也不受框架版本、路由配置的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 14:36:03