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

Next 14路由与URL处理:根路径带参显示搜索路由

解决搜索路由URL路径调整问题

要实现去掉URL中的search路径,用根路径/?s=xxx显示搜索内容,需要从组件跳转逻辑和Next.js路由重写配置两方面修改:

1. 修改Search组件的跳转路径

把原来跳转到/search/?s=xxx的逻辑改成直接跳转到根路径带参数,同时优化参数处理方式:

修改后的Search组件代码:

"use client";
import { useRouter, useSearchParams } from "next/navigation";
import { useState } from "react";
import navStyles from "../../css/nav/nav.module.css";

const SearchBar: React.FC = () => {
  const router = useRouter();
  const [searchQuery, setSearchQuery] = useState("");
  const searchParams = useSearchParams();

  const handleSearch = async () => {
    const params = new URLSearchParams(searchParams);
    if (searchQuery) {
      params.set("s", searchQuery);
    } else {
      params.delete("s");
    }

    try {
      // 直接跳转到根路径,带上处理后的查询参数
      await router.push(`/?${params.toString()}`);
    } catch (error: any) {
      console.error("Error navigating to search:", error.message);
    }
  };

  const handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {
    if (e.key === "Enter") {
      handleSearch();
    }
  };

  return (
    <div className={navStyles.searchStyle}>
      <input
        type="text"
        placeholder="Search..."
        value={searchQuery}
        onChange={(e) => setSearchQuery(e.target.value)}
        onKeyDown={handleKeyPress}
      />
    </div>
  );
};

export default SearchBar;

2. 配置Next.js的Rewrites规则

在next.config.js中添加规则:当访问根路径且带有s查询参数时,内部渲染/search页面,同时保留URL显示为根路径。

修改后的nextConfig:

const nextConfig = {
  async rewrites() {
    return [
      // 原有分类路由重写规则
      {
        source: "/:slug",
        destination: "/category/sport/:slug",
      },
      // 新增搜索路由重写规则:根路径带s参数时,渲染search页面
      {
        source: "/",
        destination: "/search",
        has: [
          {
            type: "query",
            key: "s",
          },
        ],
      },
    ];
  },
};

export default nextConfig;

这样配置后,用户点击搜索后URL会变成http://localhost:3000/?s=as,同时页面会渲染原/search路由的内容;直接访问根路径不带s参数时,依然显示原来的首页内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:07:47