我正在尝试在Apache中设置一个添加查询字符串的重定向。我不认为我想使用RewriteRule,因为目标是一个不同的Web服务器。我现在有这样的事情:
<VirtualHost 127.0.0.5:4039>
ServerName localhost.redirect
RedirectMatch (.*) http://otherserver.com$1?originalHost=127.0.0.5
</VirtualHost>
这适用于http://127.0.0.5:4039/foo
的请求被重定向到http://otherserver.com/foo?originalHost=127.0.0.5
。问题是http://127.0.0.5:4039/foo?another=value
也被重定向到http://otherserver.com/foo?originalHost=127.0.0.5
,我想要保留原始查询字符串的http://otherserver.com/foo?another=value&originalHost=127.0.0.5
之类的东西。
有关如何执行此操作的任何提示?我在WAMP上运行,并且对这个apache事情不太了解。
这里有一个相关问题,其中某人有一个重定向,其中目标包含查询字符串:Apache: Redirect domain to other domain with appended querystring。他们并没有试图追加一个查询字符串,只需设置一个。
答案 0 :(得分:1)
你可能不得不咬紧牙关并使用mod_rewrite。它有一个标志,用于将现有查询字符串附加到目标查询字符串。您将RedirectMatch
替换为:
RewriteEngine On
RewriteRule ^(.*)$ http://otherserver.com$1?originalHost=127.0.0.5 [L,QSA,R=302]
它看起来几乎一样,并且它将重定向302(如果您认为它是永久性的,您可以替换为301),除此之外,现有的查询字符串将整齐地附加到{ {1}}。