2016-05-17 43 views
0

我试图让一个网站使用不同的URL,基本上一个是真实URL(fakesite.com),另一个是品牌URL(NewFakeSite.com)。到目前为止,香港专业教育学院设法得到它的工作,使:当使用URL重写规则时IIS查询字符串丢失

http://fakesite.com/uv/ExpressBranding/ExpressHome.aspxhttp://NewFakeSite.com/uv/ExpressBranding/ExpressHome.aspx

都去同一个网站,都可以作为网站运行工作。问题就来了与查询字符串,我似乎,所以如果我去一个URL查询字符串希望得到第二个站点沿查询字符串传递:

http://fakesite.com/uv/EnviSetup/Wizard/GeneralInformation.aspx?DashboardId=0

对于第二个站点也无法找到页面,而不是给我:

https://NewFakeSite.com/uv/EnviSetup/Wizard/GeneralInformation.aspx

没有查询字符串在all.As这样我需要添加查询字符串。我的webconfig在下面,它不仅仅是我的代码,所以它的某些部分像HTTP到HTTPS和添加uv不是我写的。

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <remove name="Redirect to HTTPS" /> 
       <remove name="Redirect to add uv folder to dotcom" /> 
       <rule name="Redirect to add uv folder to dotcom" enabled="true" stopProcessing="true"> 
        <match url=".*" /> 
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
         <add input="{map add uv after dotcom:{REQUEST_URI}}" pattern="(.+)" /> 
        </conditions> 
        <serverVariables /> 
        <action type="Redirect" url="{C:1}" appendQueryString="false" /> 
       </rule> 
       <rule name="Redirect to HTTPS" enabled="true" stopProcessing="true"> 
        <match url="(.*)" /> 
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
         <add input="{HTTPS}" pattern="^OFF$" /> 
         <add input="{SERVER_NAME}" pattern="opterra\.esightenergy\.com" negate="true" /> 
        </conditions> 
        <serverVariables /> 
        <action type="Rewrite" url="https://{HTTP_HOST}/{R:1}" appendQueryString="false" /> 
       </rule> 
       <rule name="AddQueryStringForENVIDashBoards"> 
        <match url="https://prod.utilityvision.com/uv/EnviSetup/EnviDashboardList.aspx(\?(.*))" /> 
        <action type="Rewrite" url="HTTPS://opterra.esightenergy.com/uv/EnviSetup/Wizard/{C:1}" appendQueryString="false" /> 
        <conditions> 
         <add input="{URL}" pattern="https://prod.utilityvision.com/uv/EnviSetup/Wizard/(.*)" /> 
        </conditions> 
       </rule> 
      </rules> 
     </rewrite> 
     <httpRedirect enabled="false" destination="" exactDestination="false" childOnly="false" /> 
    </system.webServer> 
</configuration> 

任何帮助将不胜感激我是新来的IIS,所以我希望这甚至是可能的。谢谢!

编辑:我试着设置appendQueryString =“True”,但仍然没有Querystring。谢谢mjw。

编辑2:主要目标是让网站显示为不同的东西,然后它最初编程为,问题是查询字符串不会与新网址的其余部分一起提供。我已经添加了一些代码更改,看看是否可以解决问题,但它没有保持相同的URL。上面的代码示例是不是我添加了这个原:

 <rule name="AddQueryStringForENVIDashBoards"> 
      <match url="https://prod.utilityvision.com/uv/EnviSetup/EnviDashboardList.aspx(\?(.*))" /> 
      <action type="Rewrite" url="HTTPS://opterra.esightenergy.com/uv/EnviSetup/Wizard/{C:1}" appendQueryString="false" /> 
      <conditions> 
       <add input="{URL}" pattern="https://prod.utilityvision.com/uv/EnviSetup/Wizard/(.*)" /> 
      </conditions> 
     </rule> 
+0

看起来像你有appendQueryString =“false” - 使这些为真。 – mjw

+0

嘿mjw,我应该早些提到我尝试过。但它实际上并没有改变URL,Querystring仍然缺失。 – vmedhe2

回答

0

你有服务器变量的查询字符串,所以你可以用它来附加价值的重定向URL:

QUERY_STRING

因此,对于你的要求http://fakesite.com/uv/EnviSetup/Wizard/GeneralInformation.aspx?DashboardId=0

重要的服务器变量的值是:

HTTP_HOST: www.fakesite.com 
PATH: /uv/EnviSetup/Wizard/GeneralInformation.aspx 
QUERY_STRING: DashboardId=0 

此外,如果您打开IIS-> Url Rewrite并转到您的规则,则会看到有一个选项可用于测试规则,您可以简单地粘贴您的URL并概述如何解析URL。然后您将会知道哪些部分可以用来附加查询字符串。

http://www.iis.net/learn/extensions/url-rewrite-module/testing-rewrite-rule-patterns

+0

嘿感谢信息我进一步,但我仍然错过了一些东西。我的代码已添加到它: <添加输入= “{QUERY_STRING}” 图案= “\”/> vmedhe2

+0

好的,尝试更新您的问题?(*)。在评论里面复制代码是没有意义的,很难阅读,如果我理解正确,你总是希望被重定向到fakesite.com,你能否提供更多的信息在你的问题中,以便我们可以获得需要的背景信息你的IIS结构也可以帮助你描述你的目标。 – hellwd