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

Laravel 7部署Hostinger后POST/PUT请求报405 Method Not Allowed

Laravel 7.2 API 部署Hostinger后POST/PUT请求405错误解决

排查方向1:修正.htaccess配置

Hostinger的Apache环境默认可能未正确处理非GET/HEAD的HTTP方法,导致Laravel无法解析这类请求。替换根目录下的.htaccess为以下配置,确保支持PUT/PATCH/DELETE等方法:

<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]

    # 允许合法HTTP方法
    RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST|PUT|PATCH|DELETE|OPTIONS)$
    RewriteRule ^ - [R=405,L]
</IfModule>

同时确保public目录下的.htaccess使用Laravel默认配置,避免层级重写冲突。

排查方向2:确认路由定义正确性

检查routes/api.php中POST/PUT等路由的方法定义是否正确,示例如下:

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;

// 公开路由
Route::post('/register', [AuthController::class, 'register']);
Route::post('/login', [AuthController::class, 'login']);

// 需授权的路由
Route::middleware('auth:api')->group(function () {
    Route::put('/user/profile', [AuthController::class, 'updateProfile']);
    Route::post('/logout', [AuthController::class, 'logout']);
});

若部署时生成了路由缓存,需重新生成:

php artisan route:cache

可通过Hostinger控制面板的终端或SSH执行该命令。

排查方向3:Hostinger服务器HTTP方法限制

登录Hostinger控制面板,进入Advanced > PHP Configuration,检查是否存在禁用POST/PUT等方法的配置。若disable_functions或相关HTTP限制项包含目标方法,需移除对应限制。

同时确认Postman请求URL是否正确,Laravel api路由默认带/api前缀,例如请求注册接口需使用https://your-domain.com/api/register,并确保请求头设置了Content-Type: application/json。

附用户提供的代码参考

routes/api.php

// 粘贴用户提供的routes/api.php代码

AuthController类片段

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;

class AuthController extends Controller
{
    public function register(Request $request)
    {
        $validated = $request->validate([
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:8|confirmed',
        ]);

        $user = User::create([
            'name' => $validated['name'],
            'email' => $validated['email'],
            'password' => Hash::make($validated['password']),
        ]);

        $token = $user->createToken('auth_token')->plainTextToken;

        return response()->json([
            'access_token' => $token,
            'token_type' => 'Bearer',
        ]);
    }

    // 其他方法...
}

.htaccess(用户原文件)

// 粘贴用户提供的原.htaccess代码

测试截图说明

POST请求405错误截图
截图显示POST请求返回405 Method Not Allowed,需再次确认请求URL、请求方法、请求头是否配置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:22:22