求助:将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
相关产品推荐
相关产品推荐

