【问题标题】:Separation of SEO-friendly URLs分离 SEO 友好的 URL
【发布时间】:2019-05-31 13:15:04
【问题描述】:

我需要在 Laravel 中使用 SEO 友好的分层 URL 创建一个网站(电子商店)。

一些例子是:

  • www.example.com/cat1/cat11(指向一个类别产品列表)
  • www.example.com/cat1/cat11/cat111(指向一个类别产品列表)
  • www.example.com/cat1/cat11/cat111/product-title(指向产品详情页面)
  • www.example.com/contact-us(指向一个页面)

我可以解析上述 URL 并找到所需的 slug,但我不确定哪个控制器将负责每条路由。

可能的想法:

1) 为每个 URL 类型添加前缀,以便了解控制器 例如

  • www.example.com/categories/cat1/cat11/cat111 > 类别控制器
  • www.example.com/products/cat1/cat11/cat111/product-title > 产品控制器
  • www.example.com/page/contact-us > 页面控制器

2) 预先生成所有站点的 URL 并将其存储在一个表中。该表可以包含两列:URL (cat1/cat11/cat111) 和 model:id (category:8) 全局控制器将解析 URL 并使用表可以加载所需的模型和 id。

还有什么想法吗?

【问题讨论】:

    标签: laravel controller url-routing laravel-5.8 url-design


    【解决方案1】:

    我们已经多次遇到过这个问题。我认为没有“最好的方法”。这取决于给定的情况。

    应该谨慎使用结构/products/cat1/cat11/cat111/product-title。如果未正确添加规范标签,可能会导致重复内容问题。

    我们以以下设置结束:

    • www.site.com/shop/product-title > Route::get('/shop/{slug}', [\App\Http\Controllers\ProductController::class, 'show'])->name('product.show');
    • www.site.com/shop/categories/cat1/cat11/cat111 > Route::get('/shop/categories/{slugNum}', [\App\Http\Controllers\CategoryController::class, 'show'])->name('category.show')->where('slugNum', '(.*)');
    • www.site.com/contact-us > Route::get('/{any}', [\App\Http\Controllers\PageController::class, 'show'])->name('page.show')->where('any', '.*')->fallback();

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 2011-01-22
      • 2016-04-13
      • 2014-04-16
      相关资源
      最近更新 更多