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

Laravel 11下.htaccess全页面www转非www并HTTPS 301重定向问题

解决Laravel 11中www转非www并强制HTTPS全页面重定向问题

你的现有规则仅处理了HTTP转HTTPS,未覆盖www到非www的重定向,且规则位置可能错误,导致仅首页生效。按以下方案修改:

1. Apache环境:调整.htaccess配置

将重定向规则放在.htaccess文件最顶部(RewriteEngine On之后,Laravel自带规则之前):

# 强制HTTPS并处理www域名重定向
RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

# 移除www前缀,确保最终域名无www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301,NE]

如果域名固定,可使用更高效的写法(替换yourdomain.com为实际域名):

RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
RewriteCond %{HTTP_HOST} ^www\.yourdomain\.com$ [NC]
RewriteRule ^ https://yourdomain.com%{REQUEST_URI} [L,R=301,NE]

2. 关键注意事项

  • 规则顺序:必须将重定向规则放在Laravel自带的路由转发规则之前,否则请求会先被Laravel处理,重定向无法触发。
  • 清除缓存:301是永久重定向,浏览器会缓存旧规则,测试时请使用隐私窗口或清空浏览器缓存。
  • 反向代理适配:如果使用Nginx、Cloudflare等反向代理,需确保X-Forwarded-Proto头被正确传递,否则规则无法识别HTTPS状态。

3. Nginx环境配置

若服务器使用Nginx,在站点配置的server块中添加:

# 处理HTTP请求,强制跳转至HTTPS非www域名
server {
    listen 80;
    listen [::]:80;
    server_name www.yourdomain.com yourdomain.com;
    return 301 https://yourdomain.com$request_uri;
}

# 处理www的HTTPS请求,跳转至非www域名
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name www.yourdomain.com;
    return 301 https://yourdomain.com$request_uri;
}

# 主站点配置(Laravel核心规则)
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name yourdomain.com;
    
    root /path/to/laravel/public;
    index index.php;
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    # 其他Laravel相关Nginx配置...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:42:40