Laravel部署cPanel后去除URL public段并强制HTTPS的.htaccess配置方法
Laravel部署到cPanel public_html目录的.htaccess通用配置方案
问题场景
部署Laravel项目到cPanel的public_html目录时,通常会遇到两类典型问题:
- 访问根域名时自动跳转至带
/public后缀的路径,直接访问根域名偶发异常URL、404报错、页面持续加载情况,预期效果为URL无/public段,例如访问https://website.com/about时地址栏保持该形式,不显示https://website.com/public/about - 需要将所有HTTP请求强制跳转至HTTPS协议
原有简单重写规则RewriteRule ^(.*)$ public/$1 [L]存在偶发失效问题,初始根目录.htaccess内容如下:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule> # php -- BEGIN cPanel-generated handler, do not edit # Set the “ea-php81” package as the default “PHP” programming language. <IfModule mime_module> AddHandler application/x-httpd-ea-php81 .php .php8 .phtml </IfModule> # php -- END cPanel-generated handler, do not edit
可用配置
注意:以下配置替换
public_html根目录下的原有.htaccess内容即可,cPanel自动生成的PHP版本配置段已保留,无需手动修改;public目录下Laravel自带的默认.htaccess请保持原样,不要改动。
<IfModule mod_rewrite.c> RewriteEngine On # 强制所有请求跳转HTTPS RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # 禁止直接访问/public路径,自动跳回无public段的地址 RewriteCond %{REQUEST_URI} ^/public/ RewriteRule ^public/(.*)$ /$1 [L,R=301] # 将所有请求转发到public目录,避免循环匹配 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ public/$1 [L] </IfModule> # php -- BEGIN cPanel-generated handler, do not edit # Set the “ea-php81” package as the default “PHP” programming language. <IfModule mime_module> AddHandler application/x-httpd-ea-php81 .php .php8 .phtml </IfModule> # php -- END cPanel-generated handler, do not edit
配置生效注意事项
- 配置上传完成后,请清除浏览器缓存再测试,301永久重定向会被浏览器本地缓存,旧缓存会导致测试结果异常
- 如果需要临时调试规则,可以将规则中的
R=301临时改为R=302(临时重定向),调试完成后再改回301,避免缓存影响 - 请确保项目目录权限符合Laravel要求,
storage、bootstrap/cache目录权限设置为755,避免权限导致的加载异常
规则原理说明
- HTTPS强制跳转逻辑:通过服务器变量
HTTPS判断当前请求是否为加密协议,非加密请求直接返回301永久重定向到对应HTTPS地址,对搜索引擎友好 - /public路径屏蔽逻辑:匹配所有请求路径以
/public开头的访问,自动去除路径中的/public段后跳回根路径对应地址,彻底避免地址栏暴露public目录 - 请求转发逻辑:增加两个判断条件:当请求路径对应的不是根目录下真实存在的目录、也不是真实存在的文件时,才将请求转发到public目录下处理,同时用
L标记终止当前重写流程,避免原有规则无判断导致的循环重定向、偶发失效、页面无限加载问题
内容的提问来源于stack exchange,提问作者Kishan
相关产品推荐
相关产品推荐

