1

我正在尝试在 Apache 中设置添加查询字符串的重定向。我不认为我想使用 RewriteRule 因为目标是不同的网络服务器。我现在有这样的事情:

<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。他们并没有试图附加一个查询字符串,只是设置一个。

4

1 回答 1

1

您可能不得不硬着头皮使用 mod_rewrite。它有一个用于将现有查询字符串附加到目标查询字符串的标志。您将替换为RedirectMatch

RewriteEngine On
RewriteRule ^(.*)$ http://otherserver.com$1?originalHost=127.0.0.5 [L,QSA,R=302]

它看起来几乎一样,并且会用 302 重定向(如果您希望它是永久的,可以用 301 替换),除此之外,现有的查询字符串将整齐地附加到?originalHost=127.0.0.5.

于 2012-08-09T01:49:24.600 回答