我正在尝试将.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
规则?
答案 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>