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

Laravel+Vue3(Vite)共享虚拟主机部署出现405 Method Not Allowed问题

Laravel+Vue3 部署后API 405 Method Not Allowed 排查方向
  • 检查实际请求细节
    打开浏览器开发者工具的Network面板,提交登录表单后查看请求:

    • 确认请求方法是POST,如果显示GET,大概率是前端请求写错方法,或者请求被服务器重定向(比如301/302跳转后方法会自动转为GET)
    • 核对请求URL是否正确,比如API路由默认带的/api前缀有没有遗漏,确保指向/api/login这类正确的路由地址
  • 验证Laravel路由配置

    • 确认routes/api.php里的登录路由用Route::post()定义,示例:
      Route::post('/login', [App\Http\Controllers\AuthController::class, 'login']);
      
    • 在服务器终端执行php artisan route:list,查看路由列表中登录路由的HTTP方法是否为POST,是否存在重复定义或路由覆盖的情况
    • 注意区分API路由和web路由,API路由默认带/api前缀,不要混淆
  • 排查共享主机服务器配置

    • 检查.htaccess文件(Apache环境):
      • 如果网站根目录是项目根目录,确保.htaccess把请求转发到public目录:
        <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteRule ^(.*)$ public/$1 [L]
        </IfModule>
        
      • 如果网站根目录是public目录,确认public下的.htaccess是Laravel默认的重写规则,没有修改导致POST请求被拦截
    • 联系主机商确认是否禁用了POST方法,或者有ModSecurity等安全规则拦截了POST请求
    • Nginx环境的话,确认配置文件中有正确的路由转发规则:
      location / {
          try_files $uri $uri/ /index.php?$query_string;
      }
      
  • CSRF令牌验证排查

    • 如果是API路由,确认是否在app/Http/Middleware/VerifyCsrfToken.php的$except数组中排除了登录路由:
      protected $except = [
          '/api/login',
      ];
      
    • 前端如果用axios请求,确认是否自动携带了CSRF令牌(Laravel默认会通过meta标签注入,axios会自动读取)
  • 清除缓存

    • 在服务器执行以下命令清除Laravel缓存:
      php artisan cache:clear
      php artisan route:cache
      php artisan config:cache
      
    • 确保前端部署的是最新的Vite打包资源,清除浏览器缓存后重新测试

内容的提问来源于stack exchange,提问作者Gourav Khandelwal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:02:07