IIS重写ala SO

时间:2010-12-28 12:19:41

标签: asp.net iis rewrite isapi-rewrite

假设我有一个名为

的网站
  

http://sub.example.com/

我想重写请求,以便用户输入:

  

http://sub.example.com/id/company-name

它应该在内部重写为:

  

http://sub.example.com/public.aspx

(我想这类似于处理SO问题链接的方式,其中所有问题都有唯一的ID和非唯一的标题,并且只有id用于生成页面。这样一个旧的链接到一个问题即使问题的标题发生了变化,它仍然可以工作)

我尝试这样做: 在Application_BeginRequestglobal.aspx我首先认识到所请求的页面是“公共”页面。然后我做了一个

  

HttpContext.Current.RewritePath( “〜/公共/ Default.aspx的”,   假)

~/public/default.aspx我然后获取id以动态生成公司特定页面(例如公司徽标和名称)。 这在我的本地开发环境中运行良好,但在服务器上似乎没有触发Application_BeginRequest。我想这是因为请求的文件夹不存在?

如何解决此问题,或者有更好的方法来实现此行为?

1 个答案:

答案 0 :(得分:1)

在IIS6上,我使用了URL Rewriter(开源,免费)。在IIS 7(或7.5)上,我成功使用了Microsoft的URL Rewrite模块。