You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel如何将URL末尾的id拼接至slug字段 移除URL末尾单独id参数

#Laravel URL结构调整方案(将ID拼接至slug段末尾)

1. 修改路由定义(routes/web.php)

替换原有路由规则,调整参数数量并添加正则约束,确保可以正确匹配「slug+ID」的拼接段:

Route::get('{property_purpose}/{slug_and_id}', 'PropertiesController@single_properties')
    ->where('slug_and_id', '.*-\d+$');

上述正则规则会约束第二个路径段的格式必须为「任意字符+短横线+纯数字结尾」,避免匹配到不符合规则的路径。

2. 调整控制器参数逻辑

修改控制器方法的入参,新增拆分逻辑提取slug和ID,原有业务逻辑无需改动:

public function single_properties(Request $request, $property_purpose, $slug_and_id)
{
    // 拆分拼接段得到slug和ID
    preg_match('/(.+)-(\d+)$/', $slug_and_id, $matches);
    $slug = $matches[1];
    $id = $matches[2];

    // 原有业务代码保持不变,继续使用$property_purpose、$slug、$id处理即可
}

3. 修改Blade模板的URL生成规则

生成URL时将ID拼接到slug末尾即可:

{{ url(strtolower($property->property_purpose).'/'.$property->property_slug.'-'.$property->id) }}

注意事项

  • 若你的业务中slug本身可能以-数字格式结尾,可调整拼接规则使用唯一分隔符(如--)拼接slug和ID,同步修改路由正则和控制器的拆分规则即可。

内容的提问来源于stack exchange,提问作者Umar Waqar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:36:04