Laravel 中的自定义 slug (URL)(使用 htaccess 是一种选择)

PHP用户

我有这样的路线来自数据库

$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-]+');

解释:

  • 它需要所有以 '/category/x' 开头的内容,其中 x 可以是范围 [az]、[0-9] 和破折号中的任何内容
  • 它使用该输入来获取重定向路径
  • 它返回一个重定向

显然,您需要额外的路由来捕获这些重定向...

Route::get('/{categorySlug}', 'CategoriesController@getCategoryByRoute');

顺便说一句,此解决方案中的默认重定向状态是 302(临时移动)。如果你想要一个 301(永久移动):

redirect($redirectPath, 301);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Laravel使用模型中的自定义方法

WordPress如何创建自定义(恢复)页面URL Slug +作者ID Slug

网址中的Laravel Lang Slug

在Laravel Model类上添加自定义方法以在另一个表中插入记录是一种好习惯吗?

使用Cloudinary URL在用于缩放图像的模型中的Laravel自定义属性

使用htaccess自定义URL重写

如何使用.htaccess中的自定义逻辑重定向url?

如何使用.htaccess在Laravel 4中选择环境?

Laravel 4-NotFoundHttpException仅在一种自定义路由上

.htaccess slug url

可以在Laravel 4中使用RESTful路由创建自定义URL

如何使用htaccess在joomla中重写自定义网址

使用.htaccess的自定义URL-WordPress

使用.htaccess文件和PHP创建自定义URL

通过htaccess的Joomla自定义URL

定义与Laravel有一种关系

使用htaccess php的自定义路由

htaccess用Wordpress重写以翻译url slug,但不显示在浏览器栏中

Android:为一种EditText使用两种自定义字体

有没有一种方法可以使用自定义分隔符进行选择

有没有一种方法可以使用laravel 5.2中雄辩的一对多关系来选择列?

如何使用htaccess或php自定义seo url

如何添加几个自定义异常并将所有其他url-s重定向到htaccess中的另一个url?

Laravel 博客 slug 路由定义

从 Laravel 中的 url 获取最新的 slug

htaccess 用于漂亮的 url slug

Laravel 路由继续 url slug

Laravel 中带有 ID 和 Slug 的 URL 的路径函数

为什么我不能在 Django Rest Framework 中为父和子使用自定义 slug?