首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在laravel路由中创建一个不包含某些slug的slug路由?

在Laravel中,可以使用正则表达式约束来创建一个不包含某些slug的slug路由。具体步骤如下:

  1. routes/web.php文件中,使用Route::pattern方法定义一个正则表达式模式,用于匹配slug的格式。例如,如果slug只能包含字母和数字,可以使用以下代码:
代码语言:txt
复制
Route::pattern('slug', '[a-zA-Z0-9]+');
  1. 创建一个路由,使用where方法来约束slug的格式。在where方法中,使用!符号来排除某些slug。例如,如果要排除slug为"admin"和"dashboard",可以使用以下代码:
代码语言:txt
复制
Route::get('post/{slug}', 'PostController@show')->where('slug', '^(?!admin|dashboard$)');

在上述代码中,^(?!admin|dashboard$)是一个正则表达式,表示slug不能以"admin"或"dashboard"开头或结尾。

  1. 在控制器中,定义对应的方法来处理该路由:
代码语言:txt
复制
public function show($slug)
{
    // 处理路由逻辑
}

这样,当访问类似于/post/my-slug的URL时,Laravel将会调用PostControllershow方法,并将my-slug作为参数传递给该方法。

这种方式可以用于创建不包含某些slug的slug路由,例如在博客系统中,排除一些特殊的slug用于管理或其他用途。

推荐的腾讯云相关产品:腾讯云服务器(CVM)和腾讯云云函数(SCF)。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Laravel 7 新特性-路由趟坑之路(自定义键名以及作用域)

    Laravel 7 开始新增了一些新特性,今天我们来讲解下 路由绑定新用法,自定义键名(slug)以及作用域(范围限定) 首先我们 安装最新版本 Laravel ,并且创建两张数据表。...当然我们在以前版本可以更改这个,我们需要在 模型中重写一个方法 getRouteKeyName 接下来我们看下 Laravel 7 以前是怎么实现 首先。....test/posts/amet-laudantium-reprehenderit-ullam-repudiandae Laravel 7 版本,实现以上自定义键,就更加方便了 只需要在 路由上添加一个动态参数即可...最终看了半天文档 我发现他给路由后面有一个 动态参数 slug,加上试试。...好了,以上就是 Laravel 7 路由新特性,外加我趟过坑,希望对你有帮助。 版权许可 本作品采用 知识共享署名 4.0 国际许可协议 进行许可。

    2.5K10

    Laravel 7发行说明

    引入 Laravel 框架或其组件时,应始终使用版本约束, ^7.0,因为 Laravel 主要版本确实包含非兼容性更改。我们会努力确保您可以在一天或更短时间内更新到最新版本。...任何附加 HTML 属性都指定于一个可以被管理自动包含$attribute 变量组件,它是一个属性包实例。...基于这些函数, Laravel 7 现在提供了一个更加面向对象、更加流畅字符串操作库。你可以使用 Str::of 方法创建一个 Illuminate\Support\Stringable 对象。...$post; }); 隐式绑定约束 有时,当在路由中隐式绑定多个 Eloquent 模型时,可能希望对第二个 Eloquent 模型进行约束,使其必须是第一个 Eloquent 模型子类。...Heuvel 编写受欢迎 Laravel CORS 软件包,为配置跨域资源共享(CORS) OPTIONS 请求响应提供了官方支持, 默认 Laravel 应用程序框架 中包含一个 cors

    9K20

    Remix 快速体验

    创建项目 你一个路由 加载数据(Loading Data) 一点小小重构 从数据源拉取数据 动态路由参数 创建博客文章 根路由 提交表单 创建项目 初始化一个 Remix 项目 npx create-remix...因为我们还没有添加路由。那接下来就让我们添加这个路由创建一个文件: app/routes/posts/index.tsx 路由文件都是放置在 routes 下一个文件就代表一个路由。...我们也可以直接创建一个 posts.jsx 文件,不过如果以后还会有文章详情之类路由我们可能会创建类似post-detail.tsx 路由,或者有路由嵌套时候,不太好管理。...为 admin 路由路由创建一个文件夹,同时在里面创建一个 index.tsx mkdir app/routes/admin touch app/routes/admin/index.tsx 复制代码...表单提交(Actions) 接下来我们将要干一件大事,在new路由中创建一个 form 表单来提交新博客文章。

    89000

    Laravel 路由使用入门

    1、路由入门 在 Laravel 应用中,定义路由有两个入口,一个是 routes/web.php,用于处理终端用户通过 Web 浏览器直接访问请求,另一个是 routes/api.php,用于处理其他接入方...这就是一个最简单 Laravel 路由定义,但是涵盖了一个 Web 框架基本功能:处理请求,返回响应。...你可以将之前定义闭包函数内代码移植到 index 方法中,效果完全一样(WelcomeController 需要自己创建,我们会在后面的控制器部分讲解如何快速创建),现在先略过表。...$slug; })->where(['id' => '[0-9]+', 'slug' => '[A-Za-z]+']); 如果传入路由参数与指定正则不匹配,则会返回 404 页面: ?...你可以在视图文件中这么使用: 此外,Laravel 还允许你为每个路由命名,这样一来,不必显式引用路径 URL 就可以对路由进行引用,这样做好处是你可以为一些复杂路由路径定义一个简单路由名称从而简化对路由引用

    2.6K50

    # 3分钟短文:Laravel路由注册,你必须掌握“动词”!

    引言 无论是web页面还是API接口,我们都绕不开路由地址,网络资源定位也只能依赖于路由地址,它是衔接网络请求与应用程序桥梁。 本期为大家说一说用laravel注册路由那些必知必会方法。...hello world 路由不同,我们做了修改,在闭包内返回了一个 view() 方法创建视图。...有些位置参数,可以填可以填,并不是强制要求。或者说,如果传的话,给定一个默认值,经过数据处理后返回给用户也是可以。...如果路由内声明了多个位置参数,且都需要验证,那么在 where 方法内传入参数名 + 正则数组即可: Route::get('posts/{id}/{slug}', function ($id, $slug...写在最后 本文初步介绍了laravel内注册一条路由方法,简单地讲解了位置参数传入和接收,以及在路由内添加正则表达式赋能条件约束方式。都是基础而且使用,大家一定要牢固掌握。

    72222

    3分钟短文:Laravel路由注册,你必须掌握“动词”!

    引言 无论是web页面还是API接口,我们都绕不开路由地址,网络资源定位也只能依赖于路由地址,它是衔接网络请求与应用程序桥梁。 本期为大家说一说用laravel注册路由那些必知必会方法。...hello world 路由不同,我们做了修改,在闭包内返回了一个 view() 方法创建视图。...有些位置参数,可以填可以填,并不是强制要求。或者说,如果传的话,给定一个默认值,经过数据处理后返回给用户也是可以。...如果路由内声明了多个位置参数,且都需要验证,那么在 where 方法内传入参数名 + 正则数组即可: Route::get('posts/{id}/{slug}', function ($id, $slug...写在最后 本文初步介绍了laravel内注册一条路由方法,简单地讲解了位置参数传入和接收,以及在路由内添加正则表达式赋能条件约束方式。都是基础而且使用,大家一定要牢固掌握。

    42620

    Laravel 5 系列入门教程(一)【最适合中国人 Laravel 教程】

    跟随本教程走完一遍,你将会得到一个基础包含登录简单 blog 系统,并将学会如何使用一些强大 Laravel 插件和 composer 包(Laravel 插件也是 composer 包)。...镜像配置完成后,切换到你想要放置该网站目录下( C:\\wwwroot、/Library/WebServer/Documents/、/var/www/html、/etc/nginx/html 等),...本系列教程使用 Laravel 5.0 版本,5.1 版本去掉了本系列教程主要讲解元素(Auth 系统),建议使用 5.1 来学习。...=laravel5 DB_USERNAME=root DB_PASSWORD=password 推荐新建一个名为 laravel5 数据库,为了学习方便,推荐使用 root 账户直接操作。...这里需要强调一下,用命令行方式创建文件,和自己手动创建文件没有任何区别,你也可以尝试自己创建这两个 Model 类。 Model 即为 MVC 中 M,翻译为 模型,负责跟数据库交互。

    3.4K20

    Next.js 14 初学者入门指南(上)

    这种方式非常适用于当你需要构建像文档页面这样复杂和灵活路由结构时。通过使用双括号[[...slug]]语法,你可以创建一个能够捕获所有传入请求动态路由,并且根据URL不同部分呈现不同内容。...示例解读 在提供示例中,我们创建一个Docs组件,它利用"catch all"路由来展示文档页面。这个组件能够根据URL中slug参数不同,渲染出不同文档内容。...这里slug一个数组,它包含了URL中捕获所有动态段。...Layouts 在构建Web应用时,常常需要某些UI元素(头部导航和底部信息)在多个页面间共享。这种需求通过使用布局(Layouts)来实现最为高效。...根布局(Root Layout) 根布局是应用于所有路由布局。你可以创建一个layout.js或layout.tsx文件来定义根布局,然后在其中包括所有页面共享元素,头部和底部。

    1.4K10

    Python Django 编程 | 连载 02 - Django 路由

    创建一个 Django 项目 django_urls_views,并创建 xray 应用,在 xray 应用下 views.py 中创建一个视图函数 index(),该函数返回一个字符串。...) ] 启动应用,在浏览器中访问地址 /xray/index/ 页面显示内容符合预期,但是当项目中应用比较多时候,这种直接在根 URL 中定义路由方式是推荐,这样会使得根 URL 中定义路由非常多...可以在每个应用中创建一个自己 urls.py,在其中定义该应用包含所有的路由,再在根路由中定义每一个应用映射。...二、Django 路由中参数 在 URL 中可以通过在 ?...在指定类型前提下,默认字符串类型 整型:匹配 0 和正整数 slug:可以理解为注释、后缀或者负数等概念 uuid:匹配一个 uuid

    1K20

    Next.js 强劲对手来了!💿 Remix 正式宣布开源

    每个路由函数, Projects 可以定义一个 loader 函数,类似处理 GET 请求服务端函数,可以获取到路由信息,为初次服务端渲提供数据,在这个函数中可以获取文件系统、请求数据库、进行其他网络请求...在 Remix 中,一个页面通常包含多层级页面,每个子页面控制自身 UI 展现,而且独立控制自身数据加载和代码分割。...> 部分会渲染 src/routes/admin/index.tsx 对应路由文件渲染内容,见下图: 而这种嵌套路由是自动发生,当你创建一个 src/routes/admin.tsx 之后,又创建一个同名文件夹...,页面加载就需要很长时间,所以绝大部分网站都会放一个加载状态,小菊花转圈圈,或者体验更好一点骨架屏,如下: 这是因为这些应用缺乏类似 Remix 这样嵌套路由概念,访问某个路由时,就是访问这个路由对应页面...当我们没有在子路由中添加 ErrorBoundary 或 CatchBoundary 函数时,一旦遇到错误,这些错误就会向更上一级路由冒泡,直至最顶层路由页面,所以你只最好在最顶层路由文件里声明一个

    1.2K30

    Laravel5.2之Seeder填充数据小技巧

    说明:本文主要聊一聊Laravel测试数据填充器Seeder小技巧,同时介绍下Laravel开发插件三件套,这三个插件挺好用哦。同时,会将开发过程中一些截图和代码黏上去,提高阅读效率。...设计字段 按照上文提到Category、Post、Comment和Tag之间关系创建迁移Migration和模型Model,在项目根目录输入: php artisan make:model Category...输入指令php artisan ide-helper:models后,看看各个Model,Post这个Model: <?...Faker是一个好用生成假数据第三方库,而这个开发插件会自动帮你生成这些属性,不用自己写了。 <?...分享下最近发现一张好图和一篇极赞文章: 文章链接:Laravel中大型專案架構

    3.5K42

    最为常用Laravel操作(2)-路由

    基本路由// 接收一个 URI 和一个闭包Route::get('hello', function () { return 'Hello, Laravel';});// 支持路由方法Route:...//});路由参数使用花括号包裹路由参数不能包含 - 字符, 需要的话可以使用 _ 替代// 捕获用户 IDRoute::get('user/{id}', function ($id) { return...('user', App\User::class);}定义一个包含 {user} 参数路由:$router->get('profile/{user}', function(App\User $user...) { //});如果请求 URL 是 profile/1, 就会注入一个用户 ID 为 1 User 实例, 如果匹配模型实例在数据库不存在, 会自动生成并返回 HTTP 404 响应.自定义解析逻辑如果你想要使用自定义解析逻辑..., 需要使用 Route::bind 方法, 传递到 bind 方法闭包会获取到 URI 请求参数中值, 并且返回你想要在该路由中注入类实例:public function boot(){

    18810

    Django路由控制URL详解

    在Django项目中编写路由,就是向外暴露我们接收哪些URL请求,除此之外任何URL都不被处理,也没有返回。通俗地理解,恰当形容,URL路由是你Web服务对外暴露API。...Django奉行DRY主义,提倡使用简洁、优雅URL。 1. 概述 要设计应用程序URL,可以创建一个非正式称为URLconf(URL配置)Python模块。...默认情况下,捕获到结果保存为字符串类型,包含/这个特殊字符; 匹配模式最开头不需要添加/,因为默认情况下,每个url都带一个最前面的/,既然大家都有的部分,就不用浪费时间特别写一个了。...3.4 路由分发 通常,我们会在每个app里,各自创建一个urls.py路由模块,然后从根路由出发,将app所属url请求,全部转发到相应urls.py模块中。...注意,这个例子中正则表达式没有包含$(字符串结束匹配符),但是包含一个末尾斜杠。

    1.1K20

    python-Django-URL 路由(二)

    Django URL路由示例 下面是一个简单Django应用程序示例,它使用URL路由来处理客户端请求。...如果请求方法是POST,视图函数将获取用户提交文章标题和内容,并创建一个Post对象,然后将用户重定向到新创建文章详细页面。...如果请求方法是GET,视图函数将渲染一个包含创建新文章表单HTML模板。 第二个视图函数是post_detail,它显示单个博客文章详细信息。...如果请求方法是GET,视图函数将渲染一个包含编辑现有文章表单HTML模板。 最后一个视图函数是PostList,它显示所有博客文章列表,并允许用户创建博客文章。...这个视图函数使用Django通用视图类CreateView来处理创建新文章表单,然后重定向到post_list视图函数,这个视图函数将渲染一个包含所有文章列表HTML模板。

    82120

    Django 系列篇(五):路由篇(中)

    路由变量 上面 Django 定义路由只能代表一个页面,为了使路由指向多个不同页面,可以在路由中定义变量 变量类型有:整形、字符串、slug、uuid 4 种 其中: 1、字符串:匹配任何非空字符串...,但不包含斜杠,默认使用字符串类型 2、整形:匹配任何非负数 3、slug:匹配 ASCII 字符以及连接线和下划线,可理解为注释、后缀或附属等概念 4、uuid:匹配一个 uuid 格式对象,为了防止路由冲突...视图函数中包含 4 个参数,其中第 1 个参数为:request,其他 3 个参数为:路由信息包含 3 个变量 需要注意是,视图函数参数必须和路由信息包含变量一一对应,否则会抛出异常 # views.py...,其中 namespace 代表路由命名空间,为可选参数;arg 参数类型为字符串或元组(长度为:2 ),作用是指向项目某一个 App urls.py 文件 需要注意是: 1、如果路由函数不存在命名空间..., name='index'), ] 不同 App 中路由命令可以重复使用,但是在同一个 App 内,最好保证路由名称唯一性。

    49930

    如何通过View::first使用Laravel Blade动态模板详解

    前言 本文主要给大家介绍了关于View::first使用Laravel Blade动态模板相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细介绍吧。...当创建动态组件或者页面的时候,有时候我们想当自定义模版存在时候展示它,否则展示默认模版。...例如,当我们创建页面模块时候,通常需要给“关于我们”和“联系我们”自定义模版(展示照片或者联系表单),而“我们服务”则可以使用默认模板。...我们可以通过一系列 if 判断或者使用 view()->exists()  来判断自定义模板是否存在,然而,Laravel 5.5 为我们带来了一个更加优雅方法来实现这个功能。...()->first( ['custom-template', 'default-template'], $data ); 必须给这个方法一个参数传递一个数组,当第一个存在时候,就将使用它。

    1.3K30

    分享 7 个你可能不知道 Next.js 14 小技巧

    例如,你可以创建一个名为auth路由组文件夹,然后将所有与认证相关路由登录、注册)放在这个文件夹下。 路由分组优势 清晰文件结构:通过路由分组,你项目结构将更加清晰有序。...在app目录下任意目录中创建_components文件夹 在app目录任何子目录中创建一个以下划线开头文件夹(_components),这样文件夹和其中文件不会被Next.js当作页面来处理...在目录中创建直接提供给客户端文件 在特定目录中创建文件,这些文件不会直接作为页面提供给客户端,除非它们被显式地添加到page.tsx文件中。 5....可选捕获所有段与普通捕获所有段区别 普通捕获所有段:必须包含至少一个参数,例如/docs/topic。 可选捕获所有段:可以匹配没有任何参数路由,例如/docs。 7....创建一个导航栏组件 首先,在components目录中创建一个名为Navbar.tsx文件。这将是一个客户端组件,因为用户将与导航栏互动。

    67510
    领券