Laravel部署到服务器后路由不更新的问题求助
Laravel部署后路由无法更新的解决方案
检查服务器路由缓存文件
本地执行php artisan route:clear会删除bootstrap/cache/下的路由缓存文件(如routes.php或routes-v*.php),请确认服务器上对应文件夹内的这类文件已被彻底删除。如果上传后旧缓存文件仍存在,手动删除服务器上bootstrap/cache/下所有以routes开头的文件。验证虚拟主机的URL重写配置
路由无法访问常因URL重写未正确配置:- Apache环境:确保项目根目录的
.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> - Nginx环境:确认服务器配置包含正确的重写规则:
location / { try_files $uri $uri/ /index.php?$query_string; }
若使用cPanel等虚拟主机面板,需确保已开启URL重写功能。
- Apache环境:确保项目根目录的
确认路由文件上传完整性
直接在服务器上查看routes/web.php(或对应路由文件)的内容,确认你添加的/test路由已存在。若上传过程中断,可能导致文件未更新,重新上传修改后的路由文件。清除服务器OPcache缓存
若服务器开启了OPcache,它会缓存PHP文件内容,即使路由文件更新,仍会读取旧缓存。如果虚拟主机面板有缓存清除选项,直接操作;若无,可临时添加以下路由清除OPcache(使用后删除):Route::get('/clear-opcache', function() { if (function_exists('opcache_reset')) { opcache_reset(); return 'OPcache cleared'; } return 'OPcache not available'; });访问该路由后,再测试
/test路由。检查服务器环境配置
查看服务器上的.env文件,确认APP_URL与你访问的域名一致,避免路由解析时的域名不匹配问题;同时确认APP_ENV对应的缓存机制是否已被正确清除。
内容的提问来源于stack exchange,提问作者Bojan
相关产品推荐
相关产品推荐

