2009-08-19 46 views
0

嘿,我有一个关于 IIS7重写的问题。II7重写问题 - 排除页面

我想知道是否有一种方法来设置 重写网址的条件。我想 改写:

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/

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

我需要以某种方式排除那些从 的用户名重写,使他们 可以自己处理。

这里是我当前的代码,即时通讯在 时刻改写 用户名到/用户/用户名:

<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> 

回答

0

如果您在顶部加入文章/登录规则,并添加stopProcessing =”真实“,那么你不必使用条件。

<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。问号使前面的字符可选。

+0

非常感谢Fabian,这只是问题的一部分。 说我想拿走/用户/,只是使帐户domain.com/username/我如何阻止它与登录/文章重写冲突? 马特 – bExplosion 2009-08-21 14:22:37

+0

你很欢迎:)。 您可以在我写的示例中删除用户/匹配网址。 所以当它没有登录或文章,它会检查“([_0-9a-z - ] +)/?”并相应地重写。 – Fabian 2009-08-21 15:16:15