如何在 htaccess 重写规则中捕获 GET 变量
How to catch GET variables in a htaccess Rewrite Rule
很抱歉,我无法独自摆脱这个...在成功付款后,用户将被重定向到我网站上的这个URL:
https://www.example.com/orders/?token=AAA&status=OK
我想获取令牌和状态并将它们分配给 GET 变量,但我真的做不到,这是我当前的 RewriteRule:
RewriteRule ^orders/?token=([^/]+)&status=([^/]+)$ /orders.php?lang=it&token=&result= [L]
在 orders.php
我有这一行:
echo "token: ".$_GET['token'];
但当然在控制台中我总是得到
PHP Notice: Undefined index: token in /orders.php on line 3
有人可以帮我吗?
您无法使用 RewriteRule
模式 匹配查询字符串,您需要使用 RewriteCond
指令并检查 QUERY_STRING
服务器变量。但是,在这种情况下,您还必须确保禁用 MultiViews
(否则将在没有任何 URL 参数的情况下调用 orders.php
)。
请尝试以下操作:
# MultiViews MUST be disabled
Options -MultiViews
# Rewrite URL with query string
RewriteCond %{QUERY_STRING} ^token=([^&]+)&status=([^/]+)$
RewriteRule ^orders/$ orders.php?lang=it&token=%1&result=%2 [L]
请注意 %1
和 %2
反向引用(与 </code> 和 <code>
相对)的使用,它们从前面 条件,相对于RewriteRule
模式.
很抱歉,我无法独自摆脱这个...在成功付款后,用户将被重定向到我网站上的这个URL:
https://www.example.com/orders/?token=AAA&status=OK
我想获取令牌和状态并将它们分配给 GET 变量,但我真的做不到,这是我当前的 RewriteRule:
RewriteRule ^orders/?token=([^/]+)&status=([^/]+)$ /orders.php?lang=it&token=&result= [L]
在 orders.php
我有这一行:
echo "token: ".$_GET['token'];
但当然在控制台中我总是得到
PHP Notice: Undefined index: token in /orders.php on line 3
有人可以帮我吗?
您无法使用 RewriteRule
模式 匹配查询字符串,您需要使用 RewriteCond
指令并检查 QUERY_STRING
服务器变量。但是,在这种情况下,您还必须确保禁用 MultiViews
(否则将在没有任何 URL 参数的情况下调用 orders.php
)。
请尝试以下操作:
# MultiViews MUST be disabled
Options -MultiViews
# Rewrite URL with query string
RewriteCond %{QUERY_STRING} ^token=([^&]+)&status=([^/]+)$
RewriteRule ^orders/$ orders.php?lang=it&token=%1&result=%2 [L]
请注意 %1
和 %2
反向引用(与 </code> 和 <code>
相对)的使用,它们从前面 条件,相对于RewriteRule
模式.