无法将参数传递到另一个重定向网站

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=Ncode=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 保持“漂亮”?

如何根据Windows Phone 7中的参数值在按钮中传递参数并获取后面代码中的值以重定向到另一页?

如何在Vue中提交表单,重定向到新路由并传递参数?

将传递的参数重定向到 Windows 批处理文件 [重复]

将数组作为url参数传递并重定向到新页面