我正在考虑使用IIS Rewrite Module 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。
我有列表应用程序所以可能使用rewriteMap是要走的路?这样可以防止像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 - &gt; app.mydomain.com/application1 www.mydomain.com/application1/index.aspx - &gt; app.mydomain.com/application1/index.aspx
我现在要解决的问题是这个。
www.mydomain.com上的新网站是CMS。根据上述规则,这意味着CMS在URI中根本不能包含“application1”。
真实世界的例子是'商业'
有人可以帮助改进我的规则,以便以下是真的
www.mydomain.com/commercial - &gt; app.mydomain.com/commercial www.mydomain.com/commercial/foo/index.aspx - &gt; app.mydomain.com/foo/index.aspx
www.mydomain.com/tv-commercials/list - &gt; www.mydomain.com/tv-commercials/list www.mydomain.com/commercial-property/list - &gt; www.mydomain.com/commercial-property/list
答案 0 :(得分:1)
这就是我最终的目标。
如果URI是www.mydomain.com/application1,则第一条规则只会重定向到尾部斜杠。
第二个规则重定向到子域忽略大小写,保留查询字符串并将其视为永久重定向。
<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,我会创建另一个规则。