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 Method Not Allowed,需再次确认请求URL、请求方法、请求头是否配置正确。
内容的提问来源于stack exchange,提问作者Cheng97
相关产品推荐
相关产品推荐

