当前位置: 首页 > 知识库问答 >
问题:

laravel将未定义的url路由到特定控制器

楚元章
2023-03-14

在Laravel5.2中,我想将所有未定义的url路由到一个特定的控制器。

我正在开发类似CMS的功能,我想要这个东西。

Route::get('profile', 'Controller@profile');
Route::get('{any}', 'Controller@page');

所以url喜欢

www.domain.com/post/po-t/some/thing

www.domain。com/profile

所以第一个url应该重定向到页面函数,第二个url应该重定向到配置文件函数

基本上,我想要一些关于N-number或参数的想法,因为在页面中,它可以是任意数量的参数,如“www.domain.com/post/po-t/some/thing”

共有3个答案

谢嘉
2023-03-14

使用中间件。

在handle方法中,您可以访问$request对象。当找不到路由时,重定向到备用路由。有关获取当前url的选项,请参见此问题

编辑:一个实现可以在Laracast论坛中找到。海报想要保护管理路线:

public function handle($request, Closure $next)
{
    $routeName = Route::currentRouteName();

    // isAdminName would be a quick check. For example,
    // you can check if the string starts with 'admin.'
    if ($this->isAdminName($routeName))
    {
        // If so, he's already accessing an admin path,
        // Just send him on his merry way.
        return $next($request);
    }

    // Otherwise, get the admin route name based on the current route name.
    $adminRouteName = 'admin.' . $routeName;

    // If that route exists, redirect him there.
    if (Route::has($adminRouteName))
    {
        return redirect()->route($adminRouteName);
    }

    // Otherwise, redirect him to the admin home page.
    return redirect('/admin');
}
马亮
2023-03-14

未定义的路由生成404 HTTP状态。您可以在资源/视图/错误上创建一个404.blade.php页面,放置您想要显示的任何视图。每当发生404错误时,它会将您重定向到该页面。你不需要做其他任何事情,Laravel会在幕后处理剩下的事情。

羊舌航
2023-03-14

路线

e::获取({any},Controller@page);

只在一个网址工作

www.domain。com/post

如果你想有更多的选择,你必须做另一条路线,比如

Route::get({any}/{any1}','Controller@page');

这将工作的两个选项像这个回调

www.domain.com/post/asdfgd

 类似资料:
  • 自定义路由 easySwoole支持路由拦截。其路由利用fastRoute实现,因此其路由规则与其保持一致,该组件的详细文档请参考 GitHub文档 路由定义 若需要再easySwoole使用路由拦截功能,请在应用目录(默认为App)下,建立Router类,井继承Core\AbstractInterface\AbstractRouter实现addRouter方法,如果在类UNIX系统下请严格注意文

  • 当我在web.php中定义了路由时,我在使用Laravel时遇到了一个路由未定义的错误,如下所示: 我正在从下面的代码重定向到路由 auth()代码可以工作,但当调用重定向时,我得到错误'route[home]not defined'。有没有人知道我怎么解决这个错误。任何帮助都会很好

  • 我刚刚遵循了一个教程,在web.php中调用控制器函数所需的唯一代码是: 这适用于创建项目时已经存在的所有功能(编辑,更新,销毁,...)现在我需要做一个第二个更新函数(up投票)。但是当在控制器中创建一个新函数并路由到它时,我会得到以下错误: 未定义路由[articles.upvote]。(视图:D:\school\web backend\oplosingen\hackernews\resour

  • 在我的Laravel-5.8项目中,我有一个控制器: 视图刀片是: 服务\离开\请求\所有离开。刀身 路由\网络。php 当我单击此路线时: 我得到了这个错误: 未定义路由[service.leave\u requests.allLeaves]。 我如何解决它。 谢谢你

  • 今天第一次尝试和Laravel一起玩。我得到以下错误时,我试图访问: 无效参数异常 未定义路线[仪表板]。 路线/web.php 登录控制器。php

  • 我正在学习拉威尔,我正在尝试使用拉威尔护照。当我尝试创建一个新用户时,我发现错误404 not found。 注册控制器。php 应用程序/Http/控制器/认证 我的api控制器也有这个路径 应用程序/Http/控制器/Api api中的路由。php 注册控制器 失眠测试注册 我知道我没有传递任何注册值。 我测试过127.0.0.1:8000/create 我已经测试了127.0.0.1:800