ASP.NET MVC 和 II7 的静态重写,为什么所有页面链接都会中断



Web.Config文件中使用以下设置时,当访问者使用www.domain.com/company/openposition时,所有页面链接都会断开。

<rule name="Rewrite Rule">
   <match url=".*" />
   <conditions>
      <add input="{StaticRewrites:{REQUEST_URI}}" pattern="(.+)" />
   </conditions>
   <action type="Rewrite" url="{C:1}" />
</rule>
<rewriteMap name="StaticRewrites">
   <add key="/company/openposition" value="/Careers" />
</rewriteMap>

如果页面包含以下链接...

<a href="/Careers/Graphics">Read full job description</a>

。它变成了(与我在浏览器 URL 栏上看到的相同内容(:

<a href="/company/Careers/Graphics">Read full job description</a>

单击它后的结果是 404 错误。

我做错了什么?

这是正确的语法,您需要使用 type 作为 Redirect ,而不是 Rewrite

<rule name="Rewrite Rule" stopProcessing="true">
      <match url=".*" />
      <conditions>
        <add input="{StaticRewrites:{REQUEST_URI}}" pattern="(.+)" />
      </conditions>
      <action type="Redirect" url="{C:1}" appendQueryString="false" redirectType="Permanent"/>
</rule>

最新更新