我有这样的路线来自数据库
$cat_routes = App\User::list_routes();
foreach ($cat_routes as $route){
Route::get('/category/{'.$route->route.'}', CategoriesController@getCategoryByRoute');
}
要访问此类别,URL 将是:
domain.com/category/cars (or any category rather than cars)
无论如何要创建自定义 URL 或 slug 来更改这样的 URL:
domain.com/cars (clothes, women, watches .... etc)
因此,当用户单击“domain.com/category/cars”这样的链接时,他会被重定向到“domain.com/cars”,并且控制器继续将其作为“category/cars”类别进行处理。
该函数如下所示:
public function getCategoryByRoute($category_route)
这可以从 Laravel 或 htaccess 完成吗?
请注意,我还有其他短网址,例如
domain.com/gallery
domain.com/login
......
所以我不想重定向或缩短所有 URL。只是类别 URL。
您的部分答案是关于重定向。除了 .htaccess,你还可以在 Laravel 中实现。更好,因为如果你转向 Nginx(或其他),你不必担心“htaccess 中的应用程序逻辑”......
Route::get('/category/{categorySlug}', function($categorySlug) {
$redirectPath = sprintf('/%s', $categorySlug);
return redirect($redirectPath);
})->where('categorySlug', '[a-z0-9-]+');
解释:
显然,您需要额外的路由来捕获这些重定向...
Route::get('/{categorySlug}', 'CategoriesController@getCategoryByRoute');
顺便说一句,此解决方案中的默认重定向状态是 302(临时移动)。如果你想要一个 301(永久移动):
redirect($redirectPath, 301);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句