重写所有网址将aspx扩展名更改为html

时间:2011-08-24 16:52:51

标签: asp.net iis-7 url-rewriting

我是iis url重写模块的新手,我不知道怎么做。

例如我有这个网址:

http://localhost/section.aspx?x=section1&IDSection=45

我想要这个:

http://localhost/section~x~section11~IDSection~45.html

有什么想法吗? 谢谢你的帮助。

3 个答案:

答案 0 :(得分:0)

您需要做的是编写处理程序。这样,您可以捕获扩展,然后根据需要解析它。这对用户来说是不可见的。 Handler绝对是您想要使用URL路由的方式,您仍然需要在IIS中将处理程序从aspx更改为html。

答案 1 :(得分:0)

这是使用IIS7中的URL重写模块的解决方案:

  • 创建新的空白入站规则
  • 模式是:^ section~x~([_ 0-9a-z - ] +)~IDSection~([0-9] +)。html
  • 重写动作:Section.aspx?x = {R:1}& IDSection = {R:2}
  • 创建新的黑色外出规则
  • 使用下一格式创建新的前置条件:
    • 条件输入:{RESPONSE_CONTENT_TYPE}
    • 模式:^ text / html
  • 模式为:^ Section.aspx \?x =([_ 0-9a-z - ] +)(?:& |&)IDSection =([0-9] +)$
  • 重写动作:Section~x~ {R:2} ~IDSection~ {R:2} .html

答案 2 :(得分:0)

您可以在c#中执行此操作,以在ASP.NET中的URL中使用自定义扩展名。

protected void Application_BeginRequest(object sender, EventArgs e)
   {
    HttpApplication app = sender as HttpApplication;
    if (app.Request.Path.ToLower().IndexOf(".html") > 0)
    {
        string rawpath = app.Request.Path;
        string path = rawpath.Substring(0, rawpath.IndexOf(".html"));
        app.Context.RewritePath(path+".aspx");
    }
}