建立在ASP.NET层的URL重写
建立在ASP.NET层的肯定没有建立在IIS层的效率高,这是肯定的,但建立在ASP.NET层的肯定比建立在IIS层的要灵活的多,这也是肯定的。基本上任何支持ASP.NET2.0的都可以使用,无须IIS管理权限(也就是一般的虚拟机都可以用)。
使用方法:
把 UrlRewrite.dll 放到BIN目录下
新建一个xml 文件,用来储存URL重写规则,格式如下:
[code]<?xml version="1.0" encoding="utf-8" ?>
<UrlRewrite>
<RegularExpressionList>
<RegularExpression>
<OldUrl>(.*)/t(.*).html</OldUrl>
<NewUrl>/Default.aspx?t=$2</NewUrl>
</RegularExpression>
<RegularExpression>
<OldUrl>(.*)/f(.*).html</OldUrl>
<NewUrl>/Default.aspx?f=$2</NewUrl>
</RegularExpression>
</RegularExpressionList>
<UrlList>
<Url>
<OldUrl>/admin/</OldUrl>
<NewUrl>/admin.aspx</NewUrl>
</Url>
</UrlList>
</UrlRewrite>[/code]
RegularExpressionList 节点下储存用正则表达试,用来使用正则重写URL。
UrlList 节点下储存非正则的路径,进行直接的URL重写。
OldUrl为用户输入的路径。
NewUrl为重写到的路径。
打开Web.Config文件,找到appSettings节点,插入下面的代码:
[code] <add key="UrlRewriteXmlPathString" value="~/App_Data/UrlRewrite.xml"/>
<add key="UrlRewrite" value="3"/>[/code]
其中“~/App_Data/UrlRewrite.xml”为储存重写规则的xml文件路径。
3 表示同时开启正则重写和直接重写,如为0则关闭重写,如为1则开启直接重写关闭正则重写,如为2则关闭直接重写开启正则重写。,正则重写和直接重写都开启时,优先匹配直接重写中的路径。
最后找到 system.web 节点 ,插入下面的代码:
[code] <httpModules>
<add name="UrlRewrite" type="HttpModules.UrlRewrite, UrlRewrite" />
</httpModules>[/code]
需要源代码的直接联系我:MSN:AtlasCs@msn.com
[[i] 本帖最后由 nan10 于 2006-10-25 13:20 编辑 [/i]] 不错,支持一下 ------------
[[i] 本帖最后由 jejwe 于 2006-10-25 17:34 编辑 [/i]] ----------------
[[i] 本帖最后由 jejwe 于 2006-10-26 08:39 编辑 [/i]] 讲一下类似
<OldUrl>(.*)/t(.*).html</OldUrl>
<NewUrl>/Default.aspx?t=$2</NewUrl>
的访问地址 web.config? [quote]原帖由 [i]jejwe[/i] 于 2006-10-25 17:53 发表
讲一下类似
<OldUrl>(.*)/t(.*).html</OldUrl>
<NewUrl>/Default.aspx?t=$2</NewUrl>
的访问地址 [/quote]
就是正则替换,如果不会正则的话就去学或者让别人帮你写正则。 [quote]原帖由 [i]xlp[/i] 于 2006-10-25 18:41 发表
web.config? [/quote]
这个是ASP.NET的配置程序,每个站点下都有一个。 [quote]原帖由 [i]nan10[/i] 于 2006-10-26 07:13 发表
就是正则替换,如果不会正则的话就去学或者让别人帮你写正则。 [/quote]
我想问的是重写后的访问的地址,
<RegularExpression>
<OldUrl>(.*)/t(.*).html</OldUrl>
<NewUrl>/default.aspx?t=$2</NewUrl>
</RegularExpression>
如果default.aspx?t=3
地址就是t3.html ?
(正则表达式确实不熟悉。) 原来你不光会美工啊 正则的确有用,我学。。。 [quote]原帖由 [i]jejwe[/i] 于 2006-10-26 09:28 发表
我想问的是重写后的访问的地址,
<RegularExpression>
<OldUrl>(.*)/t(.*).html</OldUrl>
<NewUrl>/default.aspx?t=$2</NewUrl>
</RegularExpress ... [/quote]
这条的意思就是,如果用户输入的地址为 xxxxxx/txxx.html,就相当于在访问xxxxxx/default.aspx?t=xxx.xxx为任意字符。 [quote]原帖由 [i]sunnyv[/i] 于 2006-10-26 09:59 发表
原来你不光会美工啊 [/quote]
:ohh: 还好。。这是2006年的东西。。。出不来。
页:
[1]
