我正在使用带有MVC4和MVC5的IIS 8.5。
让我们假设我有两个网站,其中第一个(WS1)的网址是: http://myapp.example.com
和第二个网站(WS2)的URL是: http://myapp.example.com/sub (并且位于我要转发的另一个港口)
现在,我的问题是MVC生成的所有URL(链接等)都将使用URL的左侧部分并删除该应用程序中的/ sub。假设在WS2中我想将用户重定向到http://myapp.example.com/sub/login,但它会变为http://myapp.example.com/login。
我已经尝试过IIS URL重写,但它只能处理实际包含/ sub部分的第一次请求,MVC生成的URL当然会在没有/ sub部分的情况下错误地保留。
<rewrite>
<rules>
<rule name="Rewrite">
<match url="^Sub/(.*)" />
<action type="Rewrite" url="http://myapp.example.com/{R:1}" />
</rule>
</rules>
<outboundRules>
<rule name="Response Status Update" preCondition="ResponseStatus" stopProcessing="true">
<match serverVariable="RESPONSE_Location" pattern="^/(.*)" />
<action type="Rewrite" value="/Sub/{R:1}" />
</rule>
<rule name="RewriteRelativePaths" preCondition="IsHTML">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^/(.*)" negate="false" />
<conditions>
<add input="{URL}" pattern="^/Sub/.*" />
</conditions>
<action type="Rewrite" value="/Sub/{R:1}" />
</rule>
<preConditions>
<preCondition name="IsHTML">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
<preCondition name="ResponseStatus">
<add input="{RESPONSE_STATUS}" pattern="3[0-9][0-9]" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
我的问题是我如何才能做到这一点。使用其他子域不是一种选择。