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

求助:将PHP参数符号从?改为/的实现方法

实现URL从example.com/page?name=example到example.com/page/example的重写方案

Apache服务器配置

  • 先确认服务器已开启mod_rewrite模块
  • 在项目根目录创建或编辑.htaccess文件,添加以下规则:
RewriteEngine On
# 把 /page/xxx 格式的URL映射为 /page?name=xxx
RewriteRule ^page/([^/]+)$ /page?name=$1 [L,QSA]

[^/]+用来捕获/page/后面的参数值,$1指代捕获到的内容;L表示这是最后执行的规则,QSA会保留URL中可能存在的其他查询参数。

Nginx服务器配置

在站点对应的server配置块中添加以下规则:

# 匹配 /page/xxx 格式的请求,重写为带查询参数的URL
location ~ ^/page/(.+)$ {
    rewrite ^/page/(.+)$ /page?name=$1 last;
}

如果是单页应用,还需要配置路由 fallback,确保刷新页面时不会404:

location / {
    try_files $uri $uri/ /index.html;
}

前端单页应用(SPA)路由配置

如果你的网站是React、Vue这类单页应用,直接在前端路由里定义动态路由即可:

Vue Router 示例

const routes = [
  {
    path: '/page/:name', // 定义动态参数name
    component: () => import('./views/Page.vue')
  }
]

在组件里可以通过$route.params.name获取参数值。

React Router 示例

import { Routes, Route } from 'react-router-dom';
import Page from './Page';

function App() {
  return (
    <Routes>
      <Route path="/page/:name" element={<Page />} />
    </Routes>
  );
}

在Page组件中通过useParams()获取参数:

import { useParams } from 'react-router-dom';

function Page() {
  const { name } = useParams();
  // 使用name参数做动态内容渲染
  return <div>当前页面名称:{name}</div>;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:10:13