Laravel部署至共享服务器后路由404问题求助
Laravel共享服务器路由404问题解决方案
确认网站根目录指向Laravel的
public文件夹
多数共享服务器默认根目录是public_html或www,而Laravel需要将public目录设为网站根目录。如果没配置,访问子路由时服务器会寻找对应物理文件夹,导致404。登录主机控制面板,修改网站根目录指向项目的public目录即可。检查
public/.htaccess文件的存在与配置
确保public目录下有.htaccess文件,且包含Laravel默认的URL重写规则:<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>若文件缺失,从本地项目复制或手动创建。同时确认服务器已开启
mod_rewrite模块,若未开启联系主机商处理。清除并重建路由缓存
如果部署时执行过route:cache,后续路由变更可能导致缓存异常。有SSH权限的话执行以下命令:php artisan route:clear php artisan route:cache无SSH权限可临时创建
clear-cache.php文件放在项目根目录:<?php require __DIR__.'/vendor/autoload.php'; $app = require_once __DIR__.'/bootstrap/app.php'; $kernel = $app->make(Illuminate\Contracts\Console\Kernel::class); $kernel->handle( new Symfony\Component\Console\Input\ArrayInput(['command' => 'route:clear']), new Symfony\Component\Console\Output\NullOutput() ); echo "路由缓存已清除";访问该脚本后立即删除,避免安全风险。
验证服务器PHP版本
虽然主页能正常加载,但PHP版本过低可能引发路由解析问题。核对Laravel版本对应的PHP最低要求,确保服务器PHP版本符合标准。
内容的提问来源于stack exchange,提问作者Abdellah Jouider
相关产品推荐
相关产品推荐

