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

PHP使用$_GET获取URL参数后如何隐藏或编码URL路径?

实现方案

完全可以实现,根据你的场景需求,推荐两种落地路径:

方案1:随机映射码方案(无敏感参数暴露,推荐)

核心思路是把原始参数和随机无意义字符串做数据库映射,二维码直接使用带随机串的URL,全程不会暴露原始参数值:

  • 第一步:新建参数映射表,核心字段为random_code(长度自定义的随机大小写字母+数字串,无业务含义)、origin_no(存储原始的no参数值,如CN - 005),可按需增加过期时间、访问次数限制等字段。
  • 第二步:生成二维码时,先将需要传递的no参数写入映射表,生成对应的随机串,二维码内容直接使用http://10.1.6.8/[生成的随机串]。
  • 第三步:配置.htaccess重写规则,将所有非文件/非目录的路径请求转发到入口文件处理:
    RewriteEngine On
    # 排除真实存在的文件、目录,避免静态资源被拦截
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # 把路径中的随机串作为code参数传给index.php
    RewriteRule ^([a-zA-Z0-9]+)$ index.php?code=$1 [L]
    
  • 第四步:PHP中通过$_GET['code']读取随机串,查询映射表拿到原始no参数,执行业务逻辑。如果需要最终地址显示为纯根域名,可以有两种处理:
    1. 业务逻辑执行完成后,将结果存入$_SESSION,返回302响应头header('Location: /');跳转到根路径,根路径的逻辑直接读SESSION渲染内容即可
    2. 前端返回的页面中加入JS代码,无刷新修改地址栏:
      window.history.replaceState(null, document.title, '/');
      

方案2:参数加密+前端地址替换(无需修改数据库,轻量实现)

如果不想额外维护映射表,可以用对称加密隐藏参数值,配合前端API修改地址栏实现隐藏效果:

  • 第一步:生成二维码前,将原始no参数用AES等对称加密算法加密,生成无意义的加密串,直接把加密串作为路径拼接在URL后,二维码使用该URL
  • 第二步:.htaccess重写规则和方案1一致,把路径中的加密串传给PHP处理
  • 第三步:PHP拿到加密串后解密得到原始no值,执行业务逻辑,返回页面时带上JS替换地址栏的代码即可,最终地址栏会显示为纯根域名

常见问题说明

你之前用.htaccess修改路径后参数仍然暴露,是因为没有做参数的映射/加密处理,只是把参数从query部分移到了路径部分,原始业务值仍然是明文展示,用上述两种方案都可以解决该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:15:10