Laravel项目部署CPanel后POST请求报405 Method NotAllowed错误求助
解决Laravel部署在CPanel上POST请求返回405 Method NotAllowed的问题
首先修正路由代码的语法错误:
你提供的路由代码存在明显语法问题,[UserSubscribeController::class, subscribe']中subscribe前缺少单引号,正确写法应为:
Route::post('subscribe/{package}', [UserSubscribeController::class, 'subscribe'])->name('subscribe');
接下来排查CPanel部署环境下的常见问题:
检查
.htaccess配置
确保项目public目录下的.htaccess配置正确,以支持URL重写,标准配置如下:<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # 处理授权头 RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # 移除末尾斜杠 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # 所有请求转发到入口文件 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>同时确认CPanel已启用
mod_rewrite模块。彻底清除缓存
尽管你已尝试清除缓存,仍建议在CPanel终端执行以下命令确保缓存完全清除:php artisan cache:clear php artisan route:clear php artisan config:clear php artisan view:clear验证请求实际情况
打开浏览器开发者工具(F12)的网络标签,提交表单后检查:- 请求方法是否为POST
- 请求URL是否与路由生成的地址完全匹配
- 是否存在额外的路径或参数错误
检查目录权限
确保Laravel项目的storage和bootstrap/cache目录权限设置正确(通常为755或775,根据服务器配置调整),避免权限问题导致路由解析异常。排查路由冲突
确认没有其他路径相似的路由(如GET类型的subscribe/{package}),路由定义顺序也会影响匹配优先级,确保POST路由在冲突路由之前定义。
内容的提问来源于stack exchange,提问作者Eze Henry
相关产品推荐
相关产品推荐

