【问题标题】:Laravel making a short URLLaravel 制作短网址
【发布时间】: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 不应干扰您的类别/课程路线。首先定义它们,你就可以开始了。但是,如果您有一个名为“联系人”的类别或课程,您会遇到问题。

标签: laravel .htaccess friendly-url


【解决方案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 方法

它是正确的约定方式,我不会改变它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-18
    • 2010-12-12
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多