Laravel 制作短网址
Posted
技术标签:
【中文标题】Laravel 制作短网址【英文标题】:Laravel making a short URL 【发布时间】:2020-07-01 09:42:39 【问题描述】:我想在 laravel 应用程序中删除 URL 的一部分以使 url 更短。
这是我的路线定义:
Route::get('/category/slug','CourseController@courseCategory');
Route::get('/course/slug','CourseController@detail');
例如,我有客户服务和睡眠护理类别。还有一个名为 Sleep care lvl 1 的课程。所以我可以通过这些链接访问类别和课程:
mydomain.com/category/customer-service mydomain.com/category/sleep-care mydomain.com/course/sleep-care-lvl-1我可以知道如何通过删除 URL 中的类别和课程来缩短 URL,然后 URL 将变为:
mydomain.com/customer-service mydomain.com/sleep-care mydomain.com/sleep-care-lvl-1非常感谢!
【问题讨论】:
更新你的路由并创建一个可以区分课程和类别的控制器方法 有一种方法可以做到这一点,您可以创建一个控制器来处理您的路由并执行类似 switch 语句的操作来处理它应该采取的操作,但老实说不是一个好方法。路线和名称应遵循一致的约定 @kerbholz。就像德文格雷说的一样。我们必须处理在课程和类别之间切换。还有其他路线在我的应用程序中具有单一名称,例如联系人和关于页面。他们也是 mydomain/contact , mydomain/about 第二,你不应该改变它,它现在的样子已经很完美了 /contact 和 /about 不应干扰您的类别/课程路线。首先定义它们,你就可以开始了。但是,如果您有一个名为“联系人”的类别或课程,您会遇到问题。 【参考方案1】:最后,路由只是字符串。
实现您想要做的最简单的方法是更新路线
Route::get('/category/slug','CourseController@courseCategory');
Route::get('/course/slug','CourseController@detail');
会变成
Route::get('my-short-route','CourseController@courseCategory');
Route::get('my-other-short-route','CourseController@detail');
但这并不能解决您的问题,也不是一个好的解决方案,
但确实是一个兴趣点。
如果不重构整个应用程序,您尝试做的事情是不可能的。没有 .htaccess 可以对此有所帮助,因为您需要有一个进入应用程序的入口点。
该入口点不能是通配符变量。
意味着你不能这样做
Route::get('slug','CourseController@courseCategory');
因为这将作为一个包罗万象
你可以做类似的事情
mydomain.com/this-is-a-random-string这将触发CourseController
上的courseCategory
方法
它是正确的约定方式,我不会改变它
【讨论】:
以上是关于Laravel 制作短网址的主要内容,如果未能解决你的问题,请参考以下文章
t.cn短网址怎么生成?利用新浪短链接转化器生成永久短网址的几种方法