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

如何在htaccess的RewriteRule规则中捕获GET参数

问题解决方法

错误原因

  • RewriteRule 仅匹配URI中?之前的路径部分,不会匹配查询字符串内容,你原有规则将token、status参数写在RewriteRule的匹配规则中,永远无法命中。
  • 重写规则中$1、$2是引用RewriteRule路径匹配的捕获分组,查询字符串的捕获分组需要通过RewriteCond匹配,并用%1、%2格式引用。

正确配置

将你原有RewriteRule规则替换为以下内容即可:

RewriteEngine On
# 匹配查询字符串中的token和status参数
RewriteCond %{QUERY_STRING} ^token=([^&]+)&status=([^&]+)$
# 匹配路径为/orders/或/orders,将参数处理后重写到orders.php
RewriteRule ^orders/?$ /orders.php?lang=it&token=%1&result=%2 [L]

补充说明

  1. 如果你不需要将status参数重命名为result,仅需要追加lang=it参数,可使用更简单的配置,依靠QSA(Query String Append)标志自动拼接原有查询参数:
RewriteEngine On
RewriteRule ^orders/?$ /orders.php?lang=it [L,QSA]

该配置下你可以直接在orders.php中通过$_GET['token']、$_GET['status']获取原有参数,同时可以拿到追加的$_GET['lang']参数。

  1. 如果支付回调的查询参数顺序不固定,可使用多条件匹配兼容不同参数顺序:
RewriteEngine On
RewriteCond %{QUERY_STRING} (?:^|&)token=([^&]+)(?:&|$)
RewriteCond %{QUERY_STRING} (?:^|&)status=([^&]+)(?:&|$)
RewriteRule ^orders/?$ /orders.php?lang=it&token=%1&result=%2 [L]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:57:01