在IIS中设置重定向,并带有参数

时间:2013-07-05 10:35:58

标签: iis redirect iis-7 https iis-6

如果我有以下网站:

https://xxx/section1/
https://xxx/section2/
https://xxx/section3/

但是用户也可以使用参数访问URL:

https://xxx/section1/&p=1494943

我将在IIS6中创建一个单独的站点,它将任何HTTP请求重定向到HTTPS网站:

request: http://xxx/
redirected to: https://xxx/

同样意义上说:

request: http://xxx/section2/&p=1474724
redirected to: https://xxx/section2/&p=1474724

我的问题是,我怎样才能确保将它们重定向到正确的部分并仍继续执行参数?

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:3)

如果在重定向URL中设置$ Q标志,则请求/查询参数应包含在原始重定向中。如果您不希望问号包含在重定向URl中,则使用$ P代替。

例子:
使用$Q
原始网址:http://startingURL?param1=1&param2=2
重定向网址:https://newURL$Q
生成的网址:https://newURL?param1=1&param2=2

使用$P
原始网址:http://startingURL?param1=1&param2=2
重定向网址:https://newURL$P
生成的网址:https://newURLparam1=1&param2=2

如需进一步阅读,请查看TechNet文章:http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/41c238b2-1188-488f-bf2d-464383b1bb08.mspx?mfr=true

答案 1 :(得分:0)

将DokuWiki实例从一台服务器移到另一台服务器时,我也遇到类似的问题,然后想设置HTTP重定向,以便它将请求重定向到例如:

https://bananas.tycoon.ex/doku.php?id=knowledgebase:iis

...至:

https://oranges.tycoon.ex/doku.php?id=knowledgebase:iis

在找到可行的解决方案之前,我尝试了多种方法。这是最终实现所需结果的web.config配置:

<configuration>
    <system.webServer>
        <httpRedirect enabled="true" destination="https://oranges.tycoon.ex$S$Q" exactDestination="true" />
    </system.webServer>
</configuration>

最后一个重要部分是[exactDestination =“ true”]。没有这个,我被重定向到:

https://oranges.tycoon.ex/doku.php?id=knowledgebase:iis/doku.php

...由于附加了附加的“ /doku.php”,这自然使我进入了Wiki上不存在的页面。