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

Laravel共享主机部署:移除域名后的/public路径问题求助

解决Hostinger共享主机上Laravel根目录重定向到/public的问题

方法一:优化根目录的.htaccess规则

替换public_html目录下的.htaccess内容为以下规则,避免不必要的目录重定向:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # 仅当请求的不是实际存在的文件或目录时,转发到public目录
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ public/$1 [L]

    # 单独处理根目录请求,直接指向public/index.php
    RewriteRule ^$ public/index.php [L]
</IfModule>

原规则会无条件将所有请求转发到public目录,当访问根目录时,服务器会识别到public是实际存在的目录,从而触发自动重定向到/public/。新增的条件判断会跳过对实际文件/目录的转发,同时根目录请求直接指向入口文件,避免重定向。

方法二:修正Laravel的.env配置

确保项目根目录下的.env文件中,APP_URL配置为你的域名,不要包含/public:

APP_URL=https://www.domain.com

错误的APP_URL配置可能导致Laravel生成的链接或内部重定向带上/public路径,进而触发浏览器重定向。

方法三:检查public目录的.htaccess

确认public目录下的.htaccess为Laravel默认配置,不要添加额外的重定向规则:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

如果该文件有自定义的重定向规则,可能会和根目录的规则冲突,导致/public路径暴露。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 21:33:21