落伍者站长论坛's Archiver

nan10 发表于 2006-10-25 13:14

建立在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]]

梦迟晨岭 发表于 2006-10-25 16:26

不错,支持一下

jejwe 发表于 2006-10-25 17:30

------------

[[i] 本帖最后由 jejwe 于 2006-10-25 17:34 编辑 [/i]]

jejwe 发表于 2006-10-25 17:31

----------------

[[i] 本帖最后由 jejwe 于 2006-10-26 08:39 编辑 [/i]]

jejwe 发表于 2006-10-25 17:53

讲一下类似
      <OldUrl>(.*)/t(.*).html</OldUrl>
      <NewUrl>/Default.aspx?t=$2</NewUrl>
的访问地址

xlp 发表于 2006-10-25 18:41

web.config?

nan10 发表于 2006-10-26 07:13

[quote]原帖由 [i]jejwe[/i] 于 2006-10-25 17:53 发表
讲一下类似
      <OldUrl>(.*)/t(.*).html</OldUrl>
      <NewUrl>/Default.aspx?t=$2</NewUrl>
的访问地址 [/quote]
就是正则替换,如果不会正则的话就去学或者让别人帮你写正则。

nan10 发表于 2006-10-26 07:14

[quote]原帖由 [i]xlp[/i] 于 2006-10-25 18:41 发表
web.config? [/quote]
这个是ASP.NET的配置程序,每个站点下都有一个。

jejwe 发表于 2006-10-26 09:28

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

(正则表达式确实不熟悉。)

sunnyv 发表于 2006-10-26 09:59

原来你不光会美工啊

liuyes 发表于 2006-10-26 12:07

正则的确有用,我学。。。

nan10 发表于 2006-10-26 12:25

[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为任意字符。

nan10 发表于 2006-10-26 12:26

[quote]原帖由 [i]sunnyv[/i] 于 2006-10-26 09:59 发表
原来你不光会美工啊 [/quote]
:ohh:

默认 发表于 2008-6-11 13:13

还好。。这是2006年的东西。。。出不来。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.