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

Remix中如何实现连字符分隔的动态路由?

解决方案

核心思路

由于你使用的路由框架(推测为Next.js App Router)原生不支持将动态参数放在连字符后的文件名格式(如someroute-$id),需要通过路由重写将自定义格式的URL映射到框架标准的动态路由结构上。

步骤1:创建标准动态路由文件

在app/routes目录下创建框架原生支持的动态路由结构:

app/
└── routes/
    └── someroute/
        └── [id]/
            └── page.js # 或 page.tsx

在page.js中编写页面逻辑,可正常获取id参数:

export default function SomeroutePage({ params }) {
  const { id } = params;
  return <div>当前路由ID:{id}</div>;
}

步骤2:配置路由重写规则

在项目根目录的next.config.js(或next.config.ts)中添加重写规则,将/someroute-xxx格式的请求转发到标准动态路由:

/** @type {import('next').NextConfig} */
const nextConfig = {
  async rewrites() {
    return [
      {
        source: '/someroute-:id',
        destination: '/someroute/:id',
      },
    ];
  },
};

module.exports = nextConfig;

原理说明

框架原生的动态路由语法依赖[]包裹参数(如[id]),直接使用someroute-$id会被识别为静态文件名,无法解析动态参数。通过重写规则,我们将自定义URL格式映射到框架能识别的动态路由上,既满足了URL格式需求,又能正常使用动态参数功能。


内容的提问来源于stack exchange,提问作者Yura Chim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:49:51