Laravel直接访问邮政路线时重定向

时间:2017-11-13 09:32:55

标签: php laravel laravel-5

我对路由calculate-cars发布了一个帖子请求,并根据我在发出请求的表单中输入的数据显示了我查询的一些数据的其他视图,但我想重定向到主页当有人直接访问此路线时。

不幸的是我一直收到这个错误:

  

Symfony \ Component \ HttpKernel \ Exception \   MethodNotAllowedHttpException没有消息

我的路线:

Route::post('calculate-cars', 'CarsController@calculateCars');

我知道我收到此错误是因为我直接访问了一个帖子路径但是我在我的控制器方法中尝试了这个但是我仍然得到同样的错误:

if (!$request->isMethod('post')) {
    return redirect()->to('/');
}

6 个答案:

答案 0 :(得分:5)

添加其他路线

Route::get('calculate-cars', function () {
    return redirect()->to('/');
});

<击>

<击>

如果你使用Laravel 5.5,你可以这样做:

Route::redirect('/calculate-cars', '/', 301);

<击>

<强>更新: 方法Route::redirect也将重定向邮政路线,在您的情况下无效。

将它放在您的routes / web.php文件中:

Route::get('calculate-cars', function () {
    return redirect()->to('/');
});

答案 1 :(得分:2)

您没有解释为什么您期望POST请求。您是否保存计算以节省时间(缓存)?只有在这种情况下,POST才是正确的决定。

除了其他人:明智地选择你的http方法很重要。

  • GET:for READ(无系统更改)!
  • POST:for CREATE

就像我说的那样,你为什么选择POST?如果您想阅读,请仅更改为GET。 MDN对方法有一个清晰的总结:https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods

答案 2 :(得分:0)

  

但是当有人访问此路线时,我想重定向到主页   直接

这意味着当用户执行GET

您的路线Route::post('calculate-cars', 'CarsController@calculateCars');

仅允许POST

所以将其改为

Route::any('calculate-cars', 'CarsController@calculateCars');

答案 3 :(得分:0)

将您的路线重命名为不同的路线并再次测试。

例如

Route :: post('calculate-cars','CarsController @ calculateCars');

可能就像

Route :: post('calculate-test-cars','CarsController @ calculateCars');

我遇到了改变路线的情况。不确定它是否总是那样。

让我知道

答案 4 :(得分:0)

尝试在路由中使用any方法,然后将条件放入控制器,

Route::any('calculate-cars', 'CarsController@calculateCars');

希望这会起作用。

答案 5 :(得分:-1)

我了解到您正在尝试重定向用户 MethodNotAllowedHttpException

您可以使用Laravel的异常处理程序:

打开render并将public function render($request, Exception $exception) { if ($exception instanceof ModelNotFoundException) { return \Redirect::to('/'); } return parent::render($request, $exception); } 方法更改为:

{{1}}