无法将参数传递到另一个重定向网站
Posted
技术标签:
【中文标题】无法将参数传递到另一个重定向网站【英文标题】:Can't pass parameters to another redirect website 【发布时间】:2021-12-04 13:31:18 【问题描述】:我想重定向到另一个网站,并传递参数。
示例:我访问我的网站:source.example/?code=12345
然后,我希望它重定向到target.example/?code=12345
。
我目前正在将它用于我的.htaccess
文件,因为我从其他帖子中发现,如果我查询某个参数,它也会被传递:
RewriteEngine On
RewriteCond %QUERY_STRING ^code=[NS]$
RewriteRule "www.google.com" /$1 [R=302,L]
此外,我尝试了许多不同的方法来查看这些堆栈问题:
simple .htaccess redirect : how to redirect with parameters? Redirect and keep the parameter in the url on .htaccess但我无法让它运行:(
【问题讨论】:
你说你“不能传递参数”,但你发布的指令不会做任何事情? 【参考方案1】:因为我从其他帖子中发现,如果我查询某个参数,它也会被传递
这不是真的。默认情况下会传递查询字符串 - 如果您希望在目标 URL 上使用相同的查询字符串,则无需执行任何额外操作。
RewriteCond %QUERY_STRING ^code=[NS]$ RewriteRule "www.google.com" /$1 [R=302,L]
由于多种原因,此代码与源 URL 不匹配:
"www.google.com"
- RewriteRule
指令的第一个参数是匹配源 URL 路径(减去斜杠前缀)的正则表达式。在您的示例中,URL 路径是 empty。
^code=[NS]$
匹配 code=N
或 code=S
- 这不是您示例的意图。 ([NS]
看起来像一个损坏的 RewriteRule
标志?!)
/$1
- 这是 substitition 字符串,即。您要重定向到的 URL。 ($1
反向引用总是空的,所以这是没有意义的。)
要从source.example/?code=<number>
重定向到https://target.example/?code=<number>
,请尝试以下操作:
RewriteCond %HTTP_HOST ^source\.example [NC]
RewriteCond %QUERY_STRING ^code=\d+$
RewriteRule ^$ https://target.example/ [R=302,L]
这仅匹配code=1234
形式的查询字符串。不匹配code=
或code=1234&foo=bar
等。
查询字符串默认通过。
如果 source.example
是唯一托管在当前位置的域,那么您可以删除明确检查请求的主机名的第一个条件。
.htaccess
文件中指令的顺序很重要。像这样的外部重定向应该靠近顶部。
【讨论】:
以上是关于无法将参数传递到另一个重定向网站的主要内容,如果未能解决你的问题,请参考以下文章
使用 Azure AD 在两者之间登录时,如何将查询字符串参数或 POST 数据传递到重定向站点?
Wicket 重定向:如何传递参数并使 URL 保持“漂亮”?