IIS 7重写模块,是否可以以编程方式定义重写规则,而不是在Web.Config中管理它们?

时间:2014-07-31 01:00:24

标签: asp.net asp.net-mvc iis url-rewrite-module

我正在开发一个定制的CMS系统,我们的每个客户都有自己的域名,通过这些域名可以访问我们系统中的内容。为此,我们使用IIS重写模块来确保每个域都指向每个客户拥有的内容。

我们的重写规则的一个例子如下,

    <rule name="ReverseProxyInboundRuleCustomerX" enabled="true" stopProcessing="true">
      <match url=".*" negate="false" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_HOST}" pattern="^(www.)?customerx.com" />
        <add input="{REQUEST_URI}" pattern="/Public/([A-Z][a-z].+)" negate="true" />
        <add input="{REQUEST_URI}" pattern="/combres.axd/([A-Z][a-z].+)" negate="true" />
        <add input="{REQUEST_URI}" pattern="/Community/([1-9][0-9])/([A-Z][a-z].+)" negate="true" />
        <add input="{REQUEST_URI}" pattern="/fbchannel.ashx" negate="true" />
      </conditions>
      <action type="Rewrite" url="/Community/10/{R:0}" />
    </rule>

我想要做的是通过我的ASP MVC项目中的代码动态地和编程地定义这些规则,而不是依赖于web.config,这需要有人进入并在每次我们需要设置时修改生产服务器一个新客户。

我不想动态修改web.config,我更愿意从web.config中删除管理这些规则的责任。

是否可以在代码中动态声明这些规则?

1 个答案:

答案 0 :(得分:0)

您可以在自定义重写提供程序中轻松实现您的目标。我们在大型内容迁移项目中使用它们取得了巨大成功,在这些项目中,基于模式的简单重写不是一种选择。

http://www.iis.net/learn/extensions/url-rewrite-module/developing-a-custom-rewrite-provider-for-url-rewrite-module