从请求中剥离.html扩展名并将.html请求重定向到.aspx页面

时间:2016-03-21 16:11:42

标签: asp.net iis-7 routing web-config

我正在尝试将.html个扩展程序的传入HTTP请求指向.aspx页,并在浏览器中重写URL,使.html或{{1}显示扩展名。

详细信息:

当用户请求.aspx时,我会返回localhost:123/lorem/ipsum.html页面。该网址应如~/Views/lorem/ipsum.aspx

其中一半是使用localhost:123/lorem/ipsum包处理的。在我的AspNet.FriendlyUrls文件中,我有一组这样的规则:

RouteConfig.cs

这可确保如果用户向routes.MapPageRoute("Ipsum", "lorem/ipsum", "~/Views/lorem/ipsum.aspx");发送请求,则localhost:123/lorem/ipsum页面会在浏览器窗口中加载正确的网址命名。

我想找到一种方法将此扩展到最后使用.aspx的传入请求。我尝试添加另一个.html规则,将用户从RouteConfig.cs重定向到.html页面,希望在网络配置中使用网址重写正确显示网址,但导航到页面结果在404:

.aspx

我对路由管道非常困惑。 Web.config重写/重定向规则是否优先于routes.MapPageRoute("Ipsum Html Redirect", "lorem/ipsum.html", "~/Views/lorem/ipsum.aspx");规则?有没有办法通过添加RouteConfig.cs重写或重定向规则来修复我的问题,以便这适用于我的Web.config规则?

1 个答案:

答案 0 :(得分:0)

我最终使用Scott Hanselman的this博客链接来找出问题的解决方案。解决方案是将此代码添加到Web.config文件中:

<system.webServer>
    <rewrite>
         <rules>
             <rule name="extensionless" stopProcessing="true">
                   <match url="(.*)\.html$" />
                   <action type="Redirect" url="{R:1}" redirectType="Permanent" />
             </rule>
         </rules>
    </rewrite>
</system.webServer>