URL重写问题,正则表达式

时间:2011-09-08 18:21:06

标签: asp.net regex url-rewriting

在我的应用程序中,我习惯使用Intelligencia进行URL重写。 我的网址格式是

<rewrite url="~/([A-Za-z0-9-_ ]+)$" to="~/xxxxxx.aspx?id=$1"/>

现在我想要的是,如果网址不包含 iphonestatelist,iphonepropertytype ,那么只有它才能重定向。

我使用了以下代码,但它无效。

<rewrite url="~/(^((?!\b(iphonestatelist|iphonepropertytype)\b).)*[A-Za-z0-9-_ ]+)$" to="~/xxxxxx.aspx?id=$1"/>

例如: 以下网址不想重写

www.xxxx.com/abc/sef/iphonestatelist

重写的正确网址

www.xxxx.com/FX1234

2 个答案:

答案 0 :(得分:3)

尝试

<rewrite
   url="^(?!.*?\b(?:iphonestatelist|iphonepropertytype)\b)~/([A-Za-z0-9-_ ]+)$" 
   to="~/xxxxxx.aspx?id=$1"
/>

通常:要检查字符串是否包含(或不包含)某个子字符串,请使用前瞻(或分别为负前瞻),如下所示:

^(?=.*?pattern-reqired)pattern-you-look-for
^(?!.*?pattern-disallowed)pattern-you-look-for

这些模式也可以链接

^(?!.*?not-this)(?!.*?not-that)pattern-you-look-for

答案 1 :(得分:0)

尝试    <rewrite url="^(?!.*?\b(?:iphonestatelist|iphonepropertytype)\b)~/([A-Za-z0-9-_ ]+)$" to="~/xxxxxx.aspx?id=$1" />

通常:要检查字符串是否包含(或不包含)某个子字符串,请使用前瞻(或分别为负前瞻),如下所示:

`^(?=.*?pattern-reqired)pattern-you-look-for

^(?!。*?模式,不允许)模式任您看换 这些模式也可以链接

^(?!?不,这一点)(?!的?不,那)模式任您查找for`