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

Laravel 7 移除URL中/public路径的问题求助

解决Laravel 7共享主机部署中URL带/public的问题

我完全懂你现在的烦恼——试了常见的部署步骤,但访问路由还是得加/public,确实很影响体验。咱们来梳理下问题根源,然后一步步解决:

问题核心分析

你当前遇到的情况,大概率是共享主机的网站根目录没有指向Laravel的public文件夹。Laravel的设计里,public才是对外暴露的安全入口,所有请求都应该先经过这里。如果主机默认把根目录指向了Laravel项目的根目录(而不是public),那自然得加/public才能访问到正确的入口文件。

解决方案(按推荐程度排序)

方案1:修改共享主机的网站根目录(最推荐)

这是最规范的做法,也更安全。步骤如下:

  • 登录你的共享主机控制面板(比如cPanel、Plesk)
  • 找到对应域名的“网站根目录”或“文档根目录”设置
  • 将原来的根目录(通常是public_html或www)修改为public_html/public(假设你把Laravel整个项目放到了public_html文件夹里)
  • 保存设置后,清空浏览器缓存,访问domain.com/test应该就能正常显示了

方案2:调整文件结构(如果主机不允许修改根目录)

如果你的主机限制了根目录修改权限,可以这么操作:

  1. 移动文件:
    • 把Laravel项目public文件夹里的所有内容(包括index.php、.htaccess)复制/移动到主机的网站根目录(比如public_html)
    • 把Laravel项目的其他核心文件(app、config、routes、vendor等)移动到网站根目录的上级目录,比如命名为laravel_core
  2. 修改入口文件路径:
    打开根目录里的index.php,把里面的路径指向新的核心文件位置:
    // 原来的代码
    require __DIR__.'/../vendor/autoload.php';
    $app = require_once __DIR__.'/../bootstrap/app.php';
    
    // 修改后(根据你移动的目录调整路径)
    require __DIR__.'/../laravel_core/vendor/autoload.php';
    $app = require_once __DIR__.'/../laravel_core/bootstrap/app.php';
    
  3. 更新.htaccess:
    确保根目录的.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
        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]
    </IfModule>
    

验证测试

完成上述任意方案后,清空浏览器缓存,访问domain.com/test,应该能正常返回HI了。如果还是有问题,可以检查:

  • 主机是否开启了mod_rewrite模块(大部分共享主机默认开启,如果没开,联系主机商开启)
  • 文件权限是否正确(storage和bootstrap/cache目录需要可写权限)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:27:40