在 ASP.NET 中执行 URL 重写

microsoft原地址:

简单实用的重写URL(URLRewriter.dll),URLrewriter.dll可以微软官方网站下载,比较旧的东西了
大概记录一下实现的方法
修改web.cofing
在<configuration>节点内加入引用程序集


    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
  </configSections>

重写URL

  <RewriterConfig>
    <Rules>
        <!--重写按年查询地址-->
        <RewriterRule>
            <LookFor>~/content_list_year,(\d{1,9}),(\d{1,9}),(\d{4})\.aspx</LookFor>
            <SendTo><![CDATA[~/Test.aspx?bigtypeid=$1&smalltypeid=$2&postyear=$3]]></SendTo>
        </RewriterRule>
        <!--重写评论地址-->
        <RewriterRule>
            <LookFor>~/comment,(\d{1,9})\.aspx</LookFor>
            <SendTo><![CDATA[~/comment.aspx?PostID=$1]]></SendTo>
        </RewriterRule>

    </Rules>
  </RewriterConfig>

(注:重写的URL要以aspx结尾,如想输入目录达到URL重写要在目录下创建一个default.aspx(IIS中的默认档))

我说的可能不是很详细,看微软提供的代码吧)

http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx


==========================

asp.net URL重写(URLRewriter) 之简化版

===============================

asp.net 2.0 简单实现url重写
今天,群里有人问我关于Url重写的问题,想这重写,记得国庆期间看过相关文章,msdn介绍也看过,大概就三种方法,最常用的就是用微软提供的dll文件,今天,把我dll引用了一下,按着说明配置了一下文件,结果出现不少问题,调试时找不到.cs源代码,不知是啥问题,可能dll放的太久,生秀了..-_-.#,只好上网再搜一下新的dll,突然发现2.0里的新方法!花了半个晚上做一个demo!
以下是demo源代码:  项目里只有两个页面(Default.aspx,user.aspx(直接response.write(request.querystring["userId"]))
protected void Application_BeginRequest(object sender, EventArgs e)
    {
        string suffixUrl, lastUrl, newurl = string.Empty, userId = string.Empty ;
        lastUrl = Request.RawUrl;
        if (lastUrl.Substring(0, 11).ToLower() == "/urlrewrite")//"urlrewirte是根目录名,加判断的原因是本地测试时
         {                                                                //被取出来,上传到服务器时根目录会被域名取代(消失)!
            suffixUrl = lastUrl.Substring(12).ToLower();
        }
        else
        {
            suffixUrl = lastUrl.Substring(1).ToLower();
        }
        bool isMatch = false;
        Regex myReg = new Regex(@"user/([\w\d]+)\.aspx");
        if (myReg.IsMatch(suffixUrl))
        {
            isMatch = true;
            int first=suffixUrl.LastIndexOf('/')+1;
            int end=suffixUrl.LastIndexOf('.');
            int lenght=end-first;
            userId=suffixUrl.Substring(first,lenght);//获取被匹配的组部分
        }
        if (isMatch)
        {
           newurl="~/user.aspx?userId="+userId;
         }
        else
          {
            newurl = "~/Default.aspx";
           }
 
        HttpContext.Current.RewritePath(newurl); //最关键的一句话,重写Url
    }
测试输入:http://xxx/urlrewrite/usre/cyq1162.aspx(地址栏显示)
成功定向到:http://xxx/urlrewrite/user.aspx?userid=cyq1162(页面内容显示)
..很简单吧..不用引入dll,也不用配置Webconfig.轻松的几行代码搞定!

============================

httpHandle,及httpModles及httpApplication是asp.net的三个自定义处理模块,I

IhttpMododule实现类

FormsAuthenticationModule  AuthenticateRequest  确定用户是否通过了窗体身份验证。如果没有,用户将被自动重定向到指定的登录页面。
FileAuthorizationMoudle    AuthorizeRequest           使用 Windows 身份验证时,此 HTTP 模块将检查以确保 Microsoft® Windows® 帐户对被请求                                                                             的资源具有足够的权限。
UrlAuthorizationModule  AuthorizeRequest              检查以确保请求者可以访问指定的 URL。通过 Web.config 文件中的 <authorization> 和  <location> 元素来指定 URL 授权。


 

图 2. IIS 和 ASP.NET 正在处理请求

在 asp.net 里实现 URL重写(URLRewriter)的一个最简单的方法。

参考了 (作者 Scott Mitchell 翻译:Janssen )的大作,虽然没有完全看明白,但是也照猫画虎地做了一个,颇有“成就”感。写出来分享一下。

原作里讲了很多的原理,这里就不说了(其实我也不懂)。这里就写操作过程吧。目的是实现一个最简单的能实现 URL重写 的程序。

1、需要设置一下IIS里的站点属性。

2、修改web.config的内容。

 <system.web>
      <httpHandlers>
        <add verb="*" path="*.zhtml" type="ZDIL.URLRewriter.RewriterFactoryHandler, ZDILURLRewriter" />
    </httpHandlers>
</system.web>
    其中*.zhtml 就是地址栏里面写的网页的扩展名,就是给用户看的,这个可以随意改(但是要符合扩展名的规则!)。当然要和第一步里面的设置相一致才行。

3、写一个类。

using System;
using System.IO;
using System.Web;
using System.Web.UI;

namespace ZDIL.URLRewriter
{
    /**//// <summary>
    /// URL重写
    /// </summary>
    public class RewriterFactoryHandler : IHttpHandlerFactory
    {
        /**//// <summary>
        /// GetHandler is executed by the ASP.NET pipeline after the associated HttpModules have run.  The job of
        /// GetHandler is to return an instance of an HttpHandler that can process the page.
        /// </summary>
        /// <param name="context">The HttpContext for this request.</param>
        /// <param name="requestType">The HTTP data transfer method (<b>GET</b> or <b>POST</b>)</param>
        /// <param name="url">The RawUrl of the requested resource.</param>
        /// <param name="pathTranslated">The physical path to the requested resource.</param>
        /// <returns>An instance that implements IHttpHandler; specifically, an HttpHandler instance returned
        /// by the <b>PageParser</b> class, which is the same class that the default ASP.NET PageHandlerFactory delegates
        /// to.</returns>
        public virtual IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
        {
            string sendToUrl = url;                         //地址栏里面的地址
            string filePath = pathTranslated;

            string sendToURLString = "/web/index.aspx";  //真正要访问的页面
            string queryString = "";                     //参数。比如 ?id=123

            filePath = context.Server.MapPath(sendToURLString); //物理地址

            //这句最重要了。转向了。
            context.RewritePath(sendToURLString, String.Empty, queryString);
           
            //这个还没有弄明白 :)
            return PageParser.GetCompiledPageInstance(url, filePath, context);
        }

        public virtual void ReleaseHandler(IHttpHandler handler)
        { //这个也不懂了
        }
    }
}
 

这个类呢,要写在一个单独的项目里面,然后编译成 ZDILURLRewriter.DLL文件。(注意文件名,写错了就不能正常运行了)。

4、完成了。

打开IE ,在地址栏里输入 http://.../1.zhtml

浏览者看到是一个静态页的地址,但是实际上访问的却是 /web/index.aspx 这个动态网页。


怎么样简单吧。

当然了,这个是最简单的,简单到了“不能用”的地步了。因为他会把所有的 *.zhtml 的访问都“重写”到 /web/index.aspx 。

至于把什么样的网页重写到哪个网页,这里就不介绍了(这里只讲方法,不讲实现的细节)。

方法很多了,原作是通过正则来匹配的,我是通过 string sendToUrl = url; 来判断的。

其他的就看你们的需要了。

http://blog.csdn.net/shixin1198/archive/2006/10/16/1336846.aspx

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cxzhq2002/archive/2007/05/10/1603265.aspx

posted @ 2010-10-20 17:44 如若 阅读(34) | 评论(0) | 编辑

方法一:利用Httphandler实现URL重写(伪URL及伪静态)

我们有时候会见到这样的地址:“http://www.huoho.com/show-12-34.html”,你或许认为在站点服务器根目录“/”下存在名为“show-12-34.html”的文件,其实实际它可能是不存在的,而可能你看到的内容是“/aspx/show.aspx?type= 12&id=34”的内容,为什么要这样做呢?原因有多个方面:首先是增强URL的友好性,记“show-12-34.html”总比 “/aspx/show.aspx?type=12&id=34”好记吧?其次就是方便搜索引擎收录,很多搜索引擎更看好静态HTML页,比如:百度;其次就是出于安全性的考虑,因为这样隐藏了参数“type”、“id”。是不是很有意思呢?

其实这是利用URL重写实现的,下面我就说一下在ASP.NET2.0下我所知道的最简单的实现方法:通过实现接口“IHttpHandler”来接管HTTP请求,Follow me!


1.在资源管理方案中添加一个类,类的代码如下:

  //类URLRewriter程序清单:
      using System;
      using System.Data;
      using System.Configuration;
      using System.Web;
      using System.Web.Security;
      using System.Web.UI;
      using System.Web.UI.WebControls;
      using System.Web.UI.WebControls.WebParts;
      using System.Web.UI.HtmlControls;
      /// <summary>
      /// UrlRewriter URL重写类
         /// Author:yoyo
      /// blog:http://yangmingsheng.cn
      /// </summary>
      public class UrlRewriter : IHttpHandler //实现“IHttpHandler”接口
      {
         public UrlRewriter()
      {
      //
      // TODO: 在此处添加构造函数逻辑
         //
      }
      public void ProcessRequest(HttpContext Context)
      {
      try
      {
      //取得原始URL屏蔽掉参数
      string Url = Context.Request.RawUrl;
      //建立正则表达式
           System.Text.RegularExpressions.Regex Reg = new System.Text.RegularExpressions.Regex

           (@"/show-(\d+)-(\d+)\..+",System.Text.RegularExpressions.RegexOptions.IgnoreCase);
      //用正则表达式进行匹配
      System.Text.RegularExpressions.Match m =

                    Reg.Match(Url,Url.LastIndexOf("/"));//从最后一个“/”开始匹配
      if (m.Success)//匹配成功
      {
      String RealPath =

                   @"~/aspx/show.aspx?type=" + m.Groups[1] + "&id=" + m.Groups[2];
      //Context.Response.Write(RealPath);
      //Context.RewritePath(RealPath);//(RewritePath 用在无 Cookie 会话状态中。)
      Context.Server.Execute(RealPath);
      }
      else

                     {
      Context.Response.Redirect(Context.Request.Url.ToString());
      }
      }
      catch
      {
      Context.Response.Redirect(Context.Request.Url.ToString());
      }
      }
      /// <summary>
      /// 实现“IHttpHandler”接口所必须的成员
      /// </summary>
      /// <value></value>
      /// Author:yoyo
      /// blog:http://yangmingsheng.cn
      public bool IsReusable
      {
      get { return false; }
      }
      }
               

           


2.在web.config文件还要添加一下设置项

在<system.web>节点下添加如下代码:

            <httpHandlers>
                <add verb="*" path="*/show-?*-?*.aspx" type="UrlRewriter" />
                </httpHandlers>
               

           


解释一下:

verb是指允许的动作“GET”、“POST”、“PUT”中的一种或几种,星号“*”表示全部允许;

path是指匹配路径,支持简单的通配符;

type是指绑定的类名以及包括命名空间(如果有的话);

对了,首先你要建立一个WEB窗体“show.aspx”在目录“aspx”下,因为这个文件就是实际接受请求并显示相关内容的页面。

OK!,编译,打开网站输入地址http://localhost:80/show-12-34.aspx 访问一下,检查看是不是显示的“/aspx/show.aspx?type=12&id=34”的内容呢?!

上面我是设置了匹配ASPX文件,因为IIS里.HTML扩展名默认是不归ASP.NET接管的,如果要接管HTML请求,
请将IIS的扩展名.HTML映射到“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”,
然后将上面的aspx改成html:

            <httpHandlers>
                <add verb="*" path="*/show-?*-?*.html" type="UrlRewriter" />
                </httpHandlers>


现在打开网站输入地址http://localhost:80/show-12-34.html 访问一下~!


方法二:地址重写、使用伪静态、页面回发处理

制作网站页面的时候,有时候为了用户的体验和搜索引擎的收录,很多网站经常使用伪静态地址重写,或者称为 URL地址重写的办法,来将诸如:MyEbook.aspx?ID=1,MyEbook.aspx?ID=2MyEbook.aspx?ID=3等带有参 数的动态页面伪装成为一个静态页面,比如,将以上的伪装成为My1.html,My2.html,My3.html等等诸如此类!

        出发点是很好的,不仅有利于用户体验,也有利于收录,实在是一举两得!

         好处已讲,现在来谈谈使用这种办法所存在的毛病,问题就在于,当你使用伪静态技术的页面有按钮,需要提交内容时,这个时候,一旦与服务器之间有回发动作, 那么,地址栏里面显示的网页地址就不再是伪装出来的My1.html,My2.html,My3.html等等拉,而是变为MyEbook.aspx? ID=1,MyEbook.aspx?ID=2MyEbook.aspx?ID=3等等洛,如此一来,会让不太懂网页制作的网友感到不安,他们会认为自己 在上一个骗子网站,认为自己提交的数据都被另外一个网站给偷走了,总之,给他们的感觉就是,这样的网站具有欺骗性质;很可能,以后他们再也不敢上你的网站 了!!!………

      下面本人就个人解决如上问题的心得体会做如下说明,希望能够帮助广大网友解决问题!

       解决如上问题,有很多种办法,有使用Javascript禁止回发,有将页面的

改为等等多种方法,反正能改的地方,都有人使用过了,并且,这样的文章比较多,但是难以实现,就本人脾气而已,更喜欢直接了当的办法,尽量少改地方,免得日后出错麻烦;

      第一步:打开你的网站下面,新建一个类,文件名称大体如此:MyActionlessform.cs

      第二步:该类的代码如下:

using System;
using System.IO;
using System.Web;
using System.Web.UI;
namespace MyURL
{
    public class MyOLPage : Page
    {
        public MyOLPage()
        { }
        protected override void Render(HtmlTextWriter writer)
        {
            if (writer is System.Web.UI.Html32TextWriter)
            {
                writer = new FormFixerHtml32TextWriter(writer.InnerWriter);
            }
            else
            {
                writer = new FormFixerHtmlTextWriter(writer.InnerWriter);
            }
            base.Render(writer);
        }
    }

    internal class FormFixerHtml32TextWriter : System.Web.UI.Html32TextWriter
    {
        private string _url; // 伪装的URL
        internal FormFixerHtml32TextWriter(TextWriter writer)
            : base(writer)
        {
            _url = HttpContext.Current.Request.RawUrl;
        }
        public override void WriteAttribute(string name, string value, bool encode)
        {
            if (_url != null && string.Compare(name, "action", true) == 0)
            {
                value = _url;
            }
            base.WriteAttribute(name, value, encode);
        }
    }
    internal class FormFixerHtmlTextWriter : System.Web.UI.HtmlTextWriter
    {
        private string _url;
        internal FormFixerHtmlTextWriter(TextWriter writer)
            : base(writer)
        {
            _url = HttpContext.Current.Request.RawUrl;
        }
        public override void WriteAttribute(string name, string value, bool encode)
        {
            if (_url != null && string.Compare(name, "action", true) == 0)
            {
                value = _url;
            }
            base.WriteAttribute(name, value, encode);
        }
    }
}
之后,将这个类文件编译成为MyActionlessform.dll文件,并在网站的项目中引用他,

第三步:打开具有回发操作的页面,将其中的:System.Web.UI.Page更改为: MyURL.MyOLPage,如此而已,一劳永逸了,以后不再担心回发暴露真实地址吓走网友拉!

至此,大功可成一半多一点,接下来问题又来了,什么问题呢,你运行一下你的网站,是不是出现如下错误呀!

CS0433: 类型“MyURL.MyOLPage”同时存在于“c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ Temporary ASP.NET Files\schoolit\3266aab1\aca2fc74\App_Code.2-69spm5.dll”和“c:\WINDOWS\ Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\schoolit\3266aab1\aca2fc74\assembly\dl3\4d107fc6\00b753fe_ea19c801\ MyActionlessform.DLL”中

大体就是这样的错误了,针对这样的错误,有很多解决办法,有的地方说,删除临时使用的文件夹,删除某个命名 空间等等操作,俺都试过了,但是百试不得其果,后来俺就自己想想,出现这样的错误无非就是两个文件同时存在,但是又不能重复使用,解决办法那还不简单,停 用一个,只使用一个就行了嘛

       上面的,我们不是建立了一个MyActionlessform.cs了吗,它存在App_Code这个文件夹里面,另外一个是 MyActionlessform.dll,两个文件内容完全一样,做好了,我们就不需要MyActionlessform.cs了,我们只需要 MyActionlessform.dll,那么,想方设法将前者弄走不就得了(本人建议将此文件排除项目,不提倡直接删除该文件,因为以后可能使用 到),本人做法是,在项目中直接排出MyActionlessform.cs文件,经过测试,大功至此已结束!!!!


方法三:利用Mircosoft URLRewriter.dll实现页面伪静态
昨天,转贴了一篇利用ISAPI筛选器来实现URL伪静态的文章,我按照文章上的内容做,可是没有做出来,目前看来,该方法没有使用Microsoft URLRewriter.dll这个方法好,至少我个人觉得,花了一个晚上的时间,终于研究出来了怎么利用这个dll文件来对asp.net页面实现静态 化了,其实很简单。
一,获得Mircosoft URLRewriter.dll:
获得Mircosoft URLRewriter.dll可以到http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?mfr=true
这里,选择[下载本文的源代码],下载完毕后,导入工程,我这里没有对该工程做任何修改,保留了原来的重写方式,然后直接在VS2005里面生成.dll文件就可以了。
二,使用该dll文件:
添加引用,搞定。
三,页面方面的设计,这里不在赘述了,我会放一个下载包,有兴趣的朋友下载来看看吧,代码写的比较乱。
四,web.config的配置
这部是非常关键的,也是静态化能否成功的关键。
本文实例下载:https://files.cnblogs.com/zhangyi85/StaticWeb.rar

<?xml version="1.0"?>
<configuration>
  
<configSections>
    
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
  
</configSections>

  
<RewriterConfig>
        
<Rules>
            
<RewriterRule>
                
<LookFor>~/web/new/type/(.[0-9]*)\.html</LookFor>
        
<SendTo>~/web/new.aspx?id=$1</SendTo>
            
</RewriterRule>
      
<RewriterRule>
        
<LookFor>~/web/index.html</LookFor>
        
<SendTo>~/web/index.aspx</SendTo>
      
</RewriterRule>
        
</Rules>
    
</RewriterConfig>
    
<system.web>
    
<httpHandlers>
      
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
      
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
    
</httpHandlers>
        
<compilation debug="true"/></system.web>
</configuration>


这里简单介绍一下:

<RewriterConfig>
   
<Rules>
   
<RewriterRule>
      
<LookFor>要查找的模式</LookFor>
      
<SendTo>要用来替换模式的字符串</SendTo>
   
</RewriterRule>
   
<RewriterRule>
      
<LookFor>要查找的模式</LookFor>
      
<SendTo>要用来替换模式的字符串</SendTo>
   
</RewriterRule>
   
</Rules>
</RewriterConfig>

httpHandlers的设置主要是配合IIS将请求重新定义处理,这里也比较关键,如果不存在合理的httpHandlers,那么,访问肯定会失败的。

关于正则表达式,可以到百度里搜索:"常用正则表达式",会有很多。

五.配置IIS解析.html文件
右键点我的电脑-->管理-->展开'服务和应用程序'-->internet信息服务-->找到你共享的目录-->右键 点击属性 -->点击'配置'-->映射下面 -->找到.aspx的可执行文件路径 复制路径-->粘贴路径-->扩展名为".html"-->然后把检查文件是否存在的勾去掉这样就可以了,如果遇到“确定”按钮失效, 可以用键盘事件编辑路径即可解决。

本文转自:http://www.cnblogs.com/xiachufeng/archive/2010/02/04/1663869.html

posted @ 2010-10-20 17:30 如若 阅读(35) | 评论(0) | 编辑

大家对伪静态(URL重写)有什么看法?
以.aspx\.asp\.php结尾的页伪静态为以.htm或者.html结尾的页有什么看法,性能会得到提高吗,有什么好处?
那么或者直接生成静态页面又有什么好处,是否推荐在一个网站大量使用呢?
对于腾讯那样的大的门户网站他们的新闻页是生成的静态页呢或者是伪装的?

最佳答案:
运行PHP,ASP.NET,JSP,ColdFusion的网页服务器(如IIS,Apache),大多可以用URL Rewriting来实现隐藏或改变拓展名。大网站,象腾讯,百度(用PHP),都在用URL Rewriting的方法来把拓展名隐藏或改变。好处有几点:

1. 搜索引擎比较喜欢.html,.htm的(与.jsp,.php,.aspx,.cff相比),因为.html, .htm是静态的,更容易让引擎了解你网页的内容。而动态网页的内容是根据用户,来输出不同的内容,不容易让引擎吸收具体HTML内容。

2. 如果不用URL Rewriting将拓展名隐藏或改成.html,那么假如这个网站要换个技术或把动态页面换成静态,则需要寻找所有含有拓展名的连接,把连接所含URL进行拓展名修改(如从JSP换到PHP技术,则要寻找所有含有.jsp的页面,并把所有含.jsp的URL改成.php,费时费力)。URL Rewriting正好避免了这点,因为好的URL是能做到“不变应完变”的。

3. 防止某些黑客恶意攻击。有些大网站采用不同的技术开发不同功能的页面。而把拓展名改掉,让黑客无法确认此页面用的技术是什么,从而就无从下手。

4. 方便访问者使用。访问者不是程序员,他们不明白什么是.jsp,.php.aspx,他们只知道URL。所以统一把拓展名拿掉,或者同意把拓展名换为html,htm,有利于用户的使用。用户可以知道现在在你网站的位置,如何通过输入URL到某一页面。

实例:
Intelligencia.UrlRewriter.dll aspx重写为html实例
 
1、http://urlrewriter.net/   下载解压缩后把Intelligencia.UrlRewriter.dll 文件添加引用到web工程里。

2.web.config配置:

<configSections>
   <!--UrlRewriter-->
   <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />
</configSections>
<system.web>
   <!--UrlRewriter-->
   <httpModules>
    <add type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter" name="UrlRewriter" />
         </httpModules>
</system.web>
</system.web>
<!--UrlRewriter-->
<rewriter>
   <rewrite url="~/test_([a-zA-Z]+).html$" to="~/Show.aspx?Code=$1" processing="stop" />
</rewriter>
其中: <rewrite url="~/test_([a-zA-Z]+).html$" to="~/Show.aspx?Code=$1" processing="stop" />
若果code= abc的话,最终显示的结果为"虚拟目录名称/test_abc.html" 。如果吧.html替换成 .aspx那就是"虚拟目录名称/test_abc.aspx"

3.IIS配置:

如果是用"虚拟目录名称/test_abc.aspx" 的话,不需要配置IIS. 使用了"虚拟目录名称/test_abc.html" 配置IIS的方法如下:
http://urlrewriter.net/index.php/support/installation/windows-server-2003/ 里面的图9不准确,准确的为:
还有第八步中的”untick Verify that file exists.“要看仔细。否则重写HTML就无效。

4:备注

不要在"应用程序扩展"里“添加" .html的映射,否则正常的html将无法访问。
5.在vs2005中,传多个参数应该加&amp;在vs2003中,只用分号就好了
eg.
<RewriterConfig>
    <Rules>
      <RewriterRule>
        <!--CreditNews BackGround update-->
        <LookFor>~NewsClsManage-(\d*)-(\d*).html</LookFor>
        <SendTo>~NewsClsManage.aspx?ClassID=$1&amp;flag=$2</SendTo>
      </RewriterRule>
    </Rules>
</RewriterConfig>

本文来自: IT知道网(http://www.itwis.com) 详细出处参考:http://www.itwis.com/html/net/net20/20090805/5401.html

posted @ 2011-05-02 16:29  microsoftzhcn  阅读(387)  评论(0编辑  收藏  举报