首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用URL重写规则时丢失的IIS查询字符串

使用URL重写规则时丢失的IIS查询字符串
EN

Stack Overflow用户
提问于 2016-05-17 15:30:30
回答 1查看 2K关注 0票数 0

我试图让一个网站使用不同的网址,基本上一个是真实的网址(fakesite.com),另一个是品牌网址(NewFakeSite.com)。到目前为止,我已经设法使它发挥作用,以便:

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

两个人都去同一个网站,并且都能够作为功能站点工作。这个问题来自于Querystring,我似乎无法获得第二个站点来传递Querystring,所以如果我转到一个具有如下查询字符串的URL:

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

对于第二个站点,它找不到页面,而是给了我:

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

在没有Querystring的情况下,all.As需要添加查询字符串。我的webconfig在下面,这不仅仅是我的代码,所以它的某些片段,比如HTTPS和添加uv,都不是我写的。

代码语言:javascript
复制
<?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“,但仍然没有查询。谢谢,嗯。

编辑2:主要的目标是使它成为一个不同于最初编程的URL,问题是查询字符串没有与新URL的其余部分一起出现。我添加了一些代码更改,以查看这是否会解决问题,但它没有保持相同的URL。上面的代码示例不是我添加的原始代码:

代码语言:javascript
复制
        <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>
EN

回答 1

Stack Overflow用户

发布于 2016-05-17 15:44:48

您有用于查询字符串的服务器变量,因此可以使用它将值追加到重定向url:

QUERY_STRING

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

重要的服务器变量值是:

代码语言:javascript
复制
HTTP_HOST: www.fakesite.com
PATH: /uv/EnviSetup/Wizard/GeneralInformation.aspx
QUERY_STRING: DashboardId=0

另外,如果您打开IIS->Url重写并转到您的规则中,您将看到有一个测试规则的选项,您可以简单地粘贴您的url并对URL的解析方式进行概述。然后,您还将意识到可以使用哪个部分来追加查询字符串。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37280490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档