Url rewriting 使用IIS URL重写将子文件夹重定向到子域/子文件夹

Url rewriting 使用IIS URL重写将子文件夹重定向到子域/子文件夹,url-rewriting,iis-7.5,url-rewrite-module,Url Rewriting,Iis 7.5,Url Rewrite Module,我正在研究使用IIS重写模块2.0重定向一些断开的应用程序链接 以前,www.mydomain.com是我们的公司网站,而www.mydomain.com/application1、www.mydomain.com/application2是我们客户使用的其他应用程序。它们都在同一台服务器上 现在,我们正在更新公司网站并将其移动到另一台服务器。因此,www.mydomain.com和mydomain.com解析为不同的服务器。作为这项工作的一部分,创建了app.mydomain.com的子域,以

我正在研究使用IIS重写模块2.0重定向一些断开的应用程序链接

以前,www.mydomain.com是我们的公司网站,而www.mydomain.com/application1、www.mydomain.com/application2是我们客户使用的其他应用程序。它们都在同一台服务器上

现在,我们正在更新公司网站并将其移动到另一台服务器。因此,www.mydomain.com和mydomain.com解析为不同的服务器。作为这项工作的一部分,创建了app.mydomain.com的子域,以容纳仍然驻留在我们服务器上的客户应用程序

我希望能够在新公司网站的服务器上安装重写模块,并将www.mydomain/application1或mydomain.com/application1重定向到app.mydomain.com/application1

我有列表应用程序,所以也许使用重写映射是一种方法?这将防止像www.mydomain.com/newcorporateurl这样的重定向被错误地重定向。我还需要保留子文件夹和查询字符串(由于人们有浏览器书签),如www.mydomain.com/application1/index.aspx?id=1需要转到app.mydomain.com/application1/index.aspx?id=1

如果有人能帮我把这些放在一起,那就太好了!即使只是对基本配置进行排序,这样我就可以玩一玩,并进一步理解它。我一直在浏览其他问题和资源,但仍在努力将其整合在一起

更新1

下面的内容不起作用,但希望它能说明我正在努力做什么。 我有大约15个或多个应用程序需要以这种方式重定向

<rewrite>
    <rules>
        <rule name="application1 rule" stopProcessing="true">
            <match url="(www\.)?mydomain\.com(:80)?/application1/?" />
            <action type="Redirect" url="app.mydomain.com/application1/" appendQueryString="false" />
        </rule>
        <rule name="application2 rule" stopProcessing="true">
            <match url="(www\.)?mydomain\.com(:80)?/application2/?" />
            <action type="Redirect" url="app.mydomain.com/application2/" appendQueryString="false" />
        </rule>
    </rules>
</rewrite>

更新2

在某种程度上,我认为这是可行的

<rewrite>
    <rules>
        <clear />
        <rule name="application1 rule" stopProcessing="true">
            <match url="application1(.*)" />
            <conditions>
                <add input="{HTTP_HOST}" pattern="mydomain.com" />
            </conditions>
            <action type="Redirect" url="http://app.mydomain.com/application1{R:1}" />
        </rule>
    </rules>
</rewrite>

这将重定向

www.mydomain.com/application1->app.mydomain.com/application1 www.mydomain.com/application1/index.aspx->app.mydomain.com/application1/index.aspx

我现在想解决的问题是这个

新网站www.mydomain.com是一个CMS。根据上述规则,这意味着CMS在URI中根本不能包含“application1”

现实世界的例子是“商业”

有没有人能帮我完善一下规则,让下面的是真的

www.mydomain.com/commercial->app.mydomain.com/commercial www.mydomain.com/commercial/foo/index.aspx->app.mydomain.com/foo/index.aspx

www.mydomain.com/tv-commercials/list->www.mydomain.com/tv-commercials/list
www.mydomain.com/commercial-property/list->www.mydomain.com/commercial-property/list

这就是我的结局

如果URI为www.mydomain.com/application1,则第一条规则将重定向到尾部斜杠

第二条规则重定向到子域忽略大小写,保留querystring并将其视为永久重定向

<rule name="Trailing Slash Redirect" stopProcessing="true">
    <match url="^(application1|application2)$" ignoreCase="true" />
    <action type="Redirect" url="{R:0}/" redirectType="Permanent" />
</rule>
<rule name="Http App Redirect" stopProcessing="true">
    <match url="^(application1/.*|application2/.*)$" ignoreCase="true" />
    <action type="Redirect" url="http://app.mydomain.com/{R:0}" redirectType="Permanent" />
</rule>


如果我需要重定向到Https,我将创建另一个规则。

您有多少个应用程序?这里有图案吗?(比如从
app
开始)到目前为止你试过什么吗?@cheesemacfly我已经用我的出发点更新了这个问题。这不起作用,但希望能证明我正在努力实现的目标,因为这最终满足了我的需求