【发布时间】:2014-10-23 11:19:26
【问题描述】:
我想在我的文章路由中同时使用 ID 和 slug。所以我想要/articles/ID/slug,而不是/articles/ID。
我实际上不需要任何 slug 变量;它只是为了使 URL 更具可读性和 SEO,所以我将使用 ID 作为检索文章的标识符。
如果输入了 URL /articles/ID,我想重定向到 /articles/ID/slug。 /articles/ID/edit 必须有一个例外,因为这会打开用于编辑文章的表单。
我已经用谷歌搜索并查看了这个网站,但我只找到了将 ID 替换为 slug 的示例,而不是两者都包含。
我怎样才能做到这一点?我可以使用URL 类获取文章的完整 URL (/articles/ID/slug) 吗?
当前路线配置:
Route::resource('articles', 'ArticlesController');
【问题讨论】:
-
我看过那个帖子,他说:“我的目标是继续使用 Numbers 但也使用 Slugs 以获得更好的 SEO URL”。我想同时使用。
-
它可能仍然非常接近该帖子的第一个答案。在这种情况下,您可能最好不要使用
::resource,因为您需要为您的 slug 指定额外的参数。像::controller('articles/{id}/{slug?}', ArticlesController');这样的东西可能会成功 -
谢谢,我试试看。从文档看来,我可以保留
::resource路由:如果您需要在默认资源路由之外向资源控制器添加其他路由,则应在调用 Route:: 之前定义这些路由:资源: stackoverflow.com/questions/16661292/… -
那是正确的,取决于你在哪里需要那些蛞蝓;如果只是为了查看它们,那么就可以了。如果您需要在所有
ArticlesController方法上使用 slug,那么您最终将在::resource之前编写所有Route定义,在这种情况下,::controller是更明显的选择。所以回到你的情况。