【问题标题】:How to rewrite a path using a custom HttpHandler如何使用自定义 HttpHandler 重写路径
【发布时间】:2010-04-14 12:31:48
【问题描述】:
我正在编写一个多租户应用程序,它将接收像 http://www.tenant1.com/content/images/logo.gif 和 http://www.anothertenant.com/content/images/logo.gif 这样的请求。我希望请求实际映射到文件夹位置 /content/tenant1/images/logo.gif 和 /content/anothertenant/images/logo.gif
我正在使用 asp.net Mvc 2,所以我确定可能有一种方法可以设置路由来处理此问题或自定义路由处理程序?有什么建议吗?
谢谢!
【问题讨论】:
标签:
asp.net
asp.net-mvc-2
asp.net-mvc-routing
multi-tenant
【解决方案1】:
我创建了一个自定义 HttpModule,它接入 BeginRequest 事件,然后检查路径是什么,然后调用 Context.RewritePath
【解决方案2】:
如果我理解正确,因为它是 URL 重新路由,我不知道 MVC 2 路由处理这个问题。您需要 IIS 路由,这取决于您拥有的版本。对于 IIS 6,有一个 IIS 资源工具包可以处理这些类型的请求,或者在 iirf.codeplex.com 上有 helicontech.com 的 ISAPI_REWRITE 或 Ionic 的重写器。据我所知,IIS 7 也有一个用于 url 路由的 MS 插件,作为单独的下载。
这些工具实际上可以按照您想要的方式重定向 URL,因为 MVC 不处理网站的 URL 本身,而是 URL 请求中的页面。正如您提到的,ISAPI_REWRITE 和其他工具实际上将请求重定向到主机。