Asp.net IIS7 URL重写模块导致不必要的影响

Asp.net IIS7 URL重写模块导致不必要的影响,asp.net,regex,mod-rewrite,iis-7,Asp.net,Regex,Mod Rewrite,Iis 7,这可能更像是一个正则表达式问题,但它阻碍了我们的发布。我想不出一个聪明的解决办法 基本上,我们希望将www.oursite.com/Games.aspx?g=classic&m=etc改写为www.oursite.com/classic/?m=etc 问题在于规则本身(至少是由IIS7的URL重写模块生成的)如下所示: <rewrite> <rules> <rule name="RedirectUserFriendlyURL1" stop

这可能更像是一个正则表达式问题,但它阻碍了我们的发布。我想不出一个聪明的解决办法

基本上,我们希望将www.oursite.com/Games.aspx?g=classic&m=etc改写为www.oursite.com/classic/?m=etc

问题在于规则本身(至少是由IIS7的URL重写模块生成的)如下所示:

<rewrite>
      <rules>
        <rule name="RedirectUserFriendlyURL1" stopProcessing="true">
          <match url="^Games\.aspx$" />
          <conditions>
            <add input="{REQUEST_METHOD}" negate="true" pattern="^POST$" />
            <add input="{QUERY_STRING}" pattern="^g=([^=&amp;]+)$" />
          </conditions>
          <action type="Redirect" url="{C:1}" appendQueryString="false" redirectType="Permanent" />
        </rule>
        <rule name="RewriteUserFriendlyURL2" stopProcessing="true">
          <match url="([^/]+)/?$" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="Games.aspx?g={R:1}" />
        </rule>
      </rules>
    </rewrite>


因此,将重写与类似模式匹配的任何其他文件,例如Item/?id=23。此外,我们的脚本资源文件正在被重写,因此整个站点会抛出30个javascript错误。根据我们的规范,在我们的规范中,url www.oursite.com/Games/classic或www.oursite.com/g/classic是不可接受的。有解决办法吗?许多坦克

在第二条规则中,与其匹配
([^/]+)/?$
,不如在正则表达式或语句中明确说明要重写哪些内容:

(classic|somethingelse|athirdsomething)/?$
这样,只会修改显式要重写的项。我不知道有多少可能需要重写,所以如果是一个大的数字,这可能是不可行的,但如果只是几个类别,那么它可能是最简单的


或者,如果只有某些前缀不应重写,您可以简单地添加与这些前缀模式匹配的否定条件以进行重写。

谢谢,Dav-我们考虑过这一点,但会有未知数量的项,它们需要能够更改。