Php 有没有办法改变Laravel5.5中的url?

Php 有没有办法改变Laravel5.5中的url?,php,laravel,url,Php,Laravel,Url,我正在用Laravel 5.5开发一个站点 当客户访问单个产品页面时,我将隐藏产品slug 原始url:(这是数据库中的产品slug) 必须更改为:(或html) 问题是我必须将产品slug发送给controller,以便知道需要什么产品而不是产品ID 此外,我还必须在浏览器url上显示类别名称(这必须是product slug:substr($product_name,0,-10))的子字符串 如何解决此问题?如果无法将其放入路径,则必须使用查询字符串 如果必须这样做的话,通过在查询字符串中

我正在用Laravel 5.5开发一个站点

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

原始url:(这是数据库中的产品slug)

必须更改为:(或html)

问题是我必须将产品slug发送给controller,以便知道需要什么产品而不是产品ID

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


如何解决此问题?

如果无法将其放入路径,则必须使用查询字符串


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

我使用表单解决了这个问题

我已经在blade中创建了一个表单,并制定了发布的方法


定义了一个隐藏变量来表示产品slug,然后将一个虚拟slug名称(产品slug的子字符串)呈现给route。

我试图使用route::get(\illumb\Support\Str::substr(“item/{slug}”,0,-10),“Front”解决这个问题\CatalogController@product')->name('front.product');在路由中,但它对{slug}不起作用。但如果我试着用“item”,它会起作用。嗨@coedycode。正如我前面提到的,我不能在url上显示slug。你必须通过url传递一些东西,否则控制器怎么知道要显示哪个产品?除非你用cookie或会话做了一些事情,让不同的用户在同一个url上看到不同的产品。现在还不清楚你为什么不想显示slug。是出于安全原因吗?如果您没有对该项目的引用,则无法检索该项目whatsover,这是不可能的。如果出于安全原因无法显示slug,请对其进行哈希?除非每个类别只有一个产品,否则您必须通过slug、id或哈希在url中标识该产品。谷歌在爬行时不会有cookie或会话,所以如果你不通过url识别它,你怎么知道该向谷歌展示哪个产品呢?我不知道。这是我客户的要求。我已经用输入隐藏变量完成了这项工作。通过post方法,隐藏变量将被发送到控制器,并且在路由中,slug显示为slug的子字符串。如果隐藏变量不在该页面的URL中,您如何填充该隐藏变量?
e.g. http://localhost/laravel/product/category-name.php?product-slug=product-slug