Laravel 5.3部署GoDaddy后CSS及图片无法加载问题排查
我之前帮不少开发者处理过GoDaddy上Laravel部署的静态资源问题,你遇到的情况其实挺常见的,咱们一步步来排查解决:
先确认目录结构是否正确
GoDaddy的web根目录是public_html,正确的部署方式应该是:把Laravel的核心文件(除了public文件夹里的内容)放在public_html的上层目录(比如/home/你的用户名/laravel),然后把原Laravelpublic文件夹里的所有文件/文件夹(包括css、js、images、index.php、.htaccess)全部移动到public_html里。这样既保证web服务器能直接访问静态资源,又能把Laravel核心代码藏在web根目录之外,更安全。修改public_html里的index.php路径
打开public_html/index.php,把原来指向Laravel核心文件的路径修改为上层目录的对应文件:// 原来的代码 require __DIR__.'/../vendor/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; // 修改为(假设你的Laravel核心文件在../laravel目录) require __DIR__.'/../laravel/vendor/autoload.php'; $app = require_once __DIR__.'/../laravel/bootstrap/app.php';注意路径要根据你实际的目录结构调整,确保能正确找到vendor和bootstrap/app.php。
配置.env文件的APP_URL
找到上层Laravel目录里的.env文件,把APP_URL设置为你的完整域名,比如:APP_URL=https://yourdomain.com这一步非常关键,
asset()函数生成静态资源路径时会依赖这个配置,要是URL不对,生成的路径自然无法正常访问。检查静态资源的路径和权限
确认public_html/css/style.css确实存在,并且文件权限设置正确(一般文件设为644,文件夹设为755)。GoDaddy有时候会因为权限不足导致静态资源无法读取,你可以通过主机的文件管理器调整权限。确保.htaccess文件配置正确
检查public_html/.htaccess是否和原Laravel public文件夹里的一致,特别是重写规则要完整,避免路由或静态资源被错误拦截。如果没有这个文件,直接复制原Laravel public里的.htaccess过来就行。清除Laravel缓存
Laravel可能缓存了旧的配置或路由,导致静态资源路径不对。如果有SSH权限,登录主机后运行以下命令:php artisan config:cache php artisan route:cache php artisan view:clear如果没有SSH权限,可以临时在
routes/web.php里加一个清除缓存的路由:Route::get('/clear-cache', function() { \Illuminate\Support\Facades\Artisan::call('config:clear'); \Illuminate\Support\Facades\Artisan::call('route:clear'); \Illuminate\Support\Facades\Artisan::call('view:clear'); return "缓存已清除!"; });访问
yourdomain.com/clear-cache完成缓存清除后,记得把这个路由删掉。
内容的提问来源于stack exchange,提问作者Poula Adel

