【问题标题】:Is there any way to change url in Laravel 5.5?有什么方法可以更改 Laravel 5.5 中的 url?
【发布时间】:2020-05-12 08:23:18
【问题描述】:

我正在使用 Laravel 5.5 开发一个网站

当客户访问单个产品页面时,我将隐藏产品标签。

原始网址:http://localhost/laravel/product/category-name-product-slug(这是数据库中的产品 slug)

必须改为:http://localhost/laravel/product/category-name.php(或 html)

问题是我必须将 product-slug 发送给控制器,以便知道需要什么产品而不是产品 ID。

我还必须在浏览器 url 上显示类别名称(这必须是 product-slug 的子字符串:substr($product_name, 0, -10))。

我该如何解决这个问题?

【问题讨论】:

  • 我尝试使用 Route::get(\Illuminate\Support\Str::substr("item/{slug}", 0, -10),'Front\CatalogController@product' 来解决这个问题)->name('front.product');在路线中,但它不适用于 {slug}。但是,如果我尝试“item”,它会起作用。

标签: php laravel url


【解决方案1】:

如果你不能把它放在路径中,你将不得不使用查询字符串。

Retrieving Input From The Query String

e.g. http://localhost/laravel/product/category-name.php?product-slug=product-slug

如果您必须这样做,您可能不会通过在查询字符串中传递类别和产品 ID 来丢失任何 seo。

【讨论】:

  • 嗨@coedycode。正如我之前提到的,我无法在 url 上显示 slug
  • 你必须通过 url 传递一些东西,否则控制器怎么知道要显示哪个产品?除非您使用 cookie 或 session 做某事,以便不同的用户在同一个 url 上显示不同的产品。
  • 不太清楚你为什么不想展示蛞蝓。是出于安全原因吗?如果您没有任何参考,则无法检索该项目,这是不可能的。如果出于安全原因无法显示 slug,请对其进行哈希处理?
  • 除非每个类别只有 1 个产品,否则您必须通过 slug、id 或哈希来识别 url 中的产品。谷歌在爬虫时不会有 cookie 或会话,那么如果你不通过 url 识别它,你怎么知道向谷歌展示哪个产品?
  • 我不知道。这是我客户的要求。我已经用输入隐藏变量做到了这一点。通过 post 方法,隐藏变量将被发送到控制器,并且在路由中,slug 显示为 slug 的子字符串。
【解决方案2】:

我已经通过使用表单解决了这个问题。

我在刀片中创建了一个表单并将其方法设置为 POST。

定义一个隐藏变量来表示product slug,然后渲染一个虚拟slug名称(product slug的子字符串)来路由。

【讨论】:

  • 如果隐藏变量不在此页面的 URL 中,如何填充它?
猜你喜欢
  • 2019-05-05
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多