Laravel子页面www/http/https重定向失效问题求助
解决Laravel中所有请求(含子页面)统一重定向到HTTPS非www的问题
第一步:关闭cPanel中的重定向记录
你当前在cPanel设置的重定向会和.htaccess规则冲突,导致子页面跳转异常,先删除这条记录。
第二步:替换.htaccess规则
调整规则顺序并完善重定向逻辑,确保所有HTTP、www、非www的请求(包括子页面)都正确重定向到HTTPS非www地址,且保留原路径:
Options -MultiViews -Indexes RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # 1. 重定向所有HTTP请求到HTTPS RewriteCond %{HTTPS} !=on RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L] # 2. 重定向www前缀的请求到非www的HTTPS地址 RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
规则说明
- 重定向规则放在最前面:确保请求在被Laravel前端控制器处理之前完成重定向,避免子页面路径被替换成
index.php - 使用
%{REQUEST_URI}保留原路径:这个变量会携带完整的请求路径(包括子页面如/abc),重定向时不会丢失 - 区分HTTP转HTTPS和www转非www:两条规则分别处理协议和域名前缀,逻辑清晰,覆盖所有场景
[NC]标记:忽略域名的大小写匹配,兼容不同大小写的请求
验证场景
修改完成后,以下请求都会正确跳转到https://example.com/abc:
http://example.com/abchttp://www.example.com/abchttps://www.example.com/abc
直接访问https://example.com/abc则不会触发重定向,且显示安全标识。
内容的提问来源于stack exchange,提问作者Sundar Sau
相关产品推荐
相关产品推荐

