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

Laravel本地环境public目录资源无法访问问题求助

Laravel本地启动后资源URL带public导致404的解决方案

问题说明

从服务器下载的Laravel 8.6项目在服务器端运行正常,但本地通过php artisan serve启动后,浏览器加载资源时大量报404错误,示例错误链接:
http://127.0.0.1:8000/public/assets/front-end/vendor/tiny-slider/dist/tiny-slider.css net::ERR_ABORTED 404 (Not Found)
手动去掉URL中的public前缀即可正常访问资源,但项目内约300处资源链接分散在不同文件中,无法逐一修改。

已尝试但无效的操作:

  • 修改根目录及public目录的.htaccess配置
  • 调整httpd.conf和httpd-vhosts.conf的DocumentRoot指向public目录
  • 修改.env文件中的APP_ENV、APP_DEBUG、APP_URL等参数
  • 测试相关社区解决方案
  • 开放Windows系统文件夹访问权限
  • 在public目录内新建public子目录并迁移资源(引发其他路径问题已放弃)
  • 更换WAMP环境,降级Laravel、PHP、XAMPP版本
  • 修改filesystem.php中的磁盘配置

可行解决方案

方案1:全局中间件重写URL

通过中间件自动移除请求URL中的public前缀,实现自动重定向:

  1. 生成中间件文件:
php artisan make:middleware RemovePublicPrefix
  1. 编辑app/Http/Middleware/RemovePublicPrefix.php的handle方法:
public function handle(Request $request, Closure $next)
{
    $requestUri = $request->getRequestUri();
    if (strpos($requestUri, '/public') === 0) {
        return redirect(substr($requestUri, 7));
    }
    return $next($request);
}
  1. 在app/Http/Kernel.php的$middleware数组中注册该中间件:
protected $middleware = [
    // 保留原有中间件
    \App\Http\Middleware\RemovePublicPrefix::class,
];

方案2:自定义服务器入口文件

通过修改或新增服务器入口文件,直接处理带public前缀的请求:

  1. 在项目根目录创建server.php文件,内容如下:
<?php
$uri = urldecode(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));

// 移除URL中的public前缀
if (strpos($uri, '/public') === 0) {
    $uri = substr($uri, 7);
}

// 优先返回静态资源
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
    return false;
}

require_once __DIR__.'/public/index.php';
  1. 使用以下命令启动本地服务器:
php -S 127.0.0.1:8000 server.php

方案3:创建符号链接(Windows环境)

通过符号链接映射路径,让带public前缀的请求指向实际资源目录:
打开命令提示符(以管理员身份),进入项目根目录的public文件夹,执行:

mklink /D public .

此命令会在public目录下创建一个名为public的符号链接,指向当前目录(即项目的public目录),从而让/public/assets/...的请求正确加载资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:12:41