Hostinger共享主机Laravel项目隐藏public路径的.htaccess配置问题
Hostinger共享主机部署Laravel隐藏public路径解决方法
你的当前文件结构:
Public_html/ Test/ Public/ .htaccess Index.html
要实现https://example.com/test指向test/Public且隐藏URL中的Public,按以下步骤操作:
一、放置正确的.htaccess文件
将自定义.htaccess放在Public_html/Test/目录下(与Public文件夹同级,不要放入Public内部),替换为以下规则:
<IfModule mod_rewrite.c> RewriteEngine On # 跳过已存在的文件/目录,避免静态资源被错误重写 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 注意此处Public为大写,与你的文件夹名称保持完全一致 RewriteRule ^(.*)$ Public/$1 [L] </IfModule>
二、修复Public文件夹内的.htaccess
Laravel项目的Public文件夹需要保留框架默认重写规则,替换掉当前的内容:
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # 处理授权请求头 RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # 移除URL末尾的斜杠 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # 所有请求转向Laravel入口文件 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
三、额外检查项
- Hostinger共享主机默认开启
mod_rewrite,若规则仍不生效,可联系客服确认模块状态 - 文件夹权限设置为
755,文件权限设置为644,避免权限拦截 - Linux主机区分大小写,确保规则中的
Public与实际文件夹名大小写完全匹配
内容的提问来源于stack exchange,提问作者INFINIENDER
相关产品推荐
相关产品推荐

