0

大家好,我有一个关于 IIS7 重写的问题。

我想知道是否有办法为重新编写 url 设置条件。我想重写:

http://www.domain.com/user.aspx?id=username

成为

http://www.domain.com/username/

我也有

http://www.domain.com/article.aspx http://www.domain.com/login.aspx

我希望那些成为

http://www.domain.com/article/ http://www.domain.com/login/

我遇到的问题是,如果我为用户名设置重写,则重写文章和登录中断。

我需要以某种方式将那些从用户名重写中排除,以便它们可以自己处理。

这是我当前的代码,我现在将用户名重写为 /user/username:

<rewrite>
  <rules>
    <rule name="Rewrite user accounts2">
      <match url="user/([_0-9a-z-]+)"/>
      <action type="Rewrite" url="user.aspx?id={R:1}"/>
    </rule>
    <rule name="Rewrite user accounts">
      <match url="user/([_0-9a-z-]+)/"/>
      <action type="Rewrite" url="user.aspx?id={R:1}"/>
    </rule>
  </rules>
</rewrite>
4

1 回答 1

0

如果您在顶部添加文章/登录规则并将 stopProcessing="true" 添加到它,那么您不必使用条件。

<rewrite>
  <rules>
    <rule name="Login" stopProcessing="true">
      <match url="login/?"/>
      <action type="Rewrite" url="login.aspx"/>
    </rule>
    <rule name="Article" stopProcessing="true">
      <match url="article/?"/>
      <action type="Rewrite" url="article.aspx"/>
    </rule>
    <rule name="Rewrite user accounts2" stopProcessing="true">
      <match url="user/([_0-9a-z-]+)/?"/>
      <action type="Rewrite" url="user.aspx?id={R:1}"/>
    </rule>
  </rules>
</rewrite>

PS。问号使前面的字符可选。

于 2009-08-20T20:59:32.793 回答