如题...交流中学习

解决方案 »

  1.   

    discuz里有,你可以把代码下下来看看
      

  2.   

    asp.net url重写今天研究了一天这个问题
    想实现诸如:http://www.baike.cn/1222/2/2
    http://www.baike.cn/default.html
    等这种url
    当然,程序直接生成静态页面可以实现的
    但是那样要生成很多这种页面以及文件夹
    而且在数据量大的情况下生成是很浪费时间的
    在这种情况下就要实现url重写了,当然就很多种方法
    下面介绍的是微软的URLRewriter方法1.首先下载URLRewriter.dll,下载之后直接复制到你的网站的bin目录中2.配置你的web.config文件
    在<configuration>节点下加
    <configSections>
        <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
      </configSections><RewriterConfig>
        <Rules>
         <!--一下三个是我自己写的测试的,当然你可以写很多个 -->
         <!--这个是把http://localhost:2001/default.aspx?id=1 生成http://localhost:2001/d1.aspx 这种页面 -->
          <RewriterRule>
            <LookFor>~/d(\d{0,5})\.aspx</LookFor>
            <SendTo>~/default.aspx?ID=$1</SendTo>
          </RewriterRule>
        <!--这个是把http://localhost:2001/article.aspx?id=1 生成http://localhost:2001/1/a.html 这种页面 -->
          <RewriterRule>
            <LookFor>~/(\d{0,5})/a\.html</LookFor>
            <SendTo>~/article.aspx?id=$1</SendTo>
          </RewriterRule>
        <!--这个是把http://localhost:2001/test.aspx?id=1 生成http://localhost:2001/1/ 这种页面 -->
          <RewriterRule>
            <LookFor>~/(\d{0,5})/</LookFor>
            <SendTo>~/test.aspx?id=$1</SendTo>
          </RewriterRule>    </Rules>  </RewriterConfig>同时还要在<system.web>配置节下加
          <httpHandlers>
            <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
            <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
            <add verb="*" path="*" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />      </httpHandlers>3.好了,基本上就可以了,但是还有重要一点千万不要忘了
    以上有三种情况的url生成
    针对第一种情况,第一第二步配置完就可以实现了
    可对第二种和第三种url情况,还需要进行一下配置
    先说第二种情况:因为咱们重写的是.html后缀
    所以需要在iis中进行.html映射,方法如下:
    右击站点-属性-主目录-配置
    在打开页面找扩展名.aspx,双击之后弹出窗口内复制可执行文件
    一般是C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
    复制完之后点添加在弹出窗口把内容复制到可执行文件
    扩展名.html当然这个你可以任意写了,不过要和
    <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
    保持一致.
    同时去掉确认文件是否存在,确定即可
    完成之后输入http://localhost:2001/1/a.html
    是不是就可以访问了?爽吧下面介绍第三种情况,生成目录
    这里面稍微有点复杂,同样配置iis
    还是在那个弹出窗口,点插入
    把复制的文件即C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
    复制到可执行文件框内,同时去掉确认文件是否存在,确定即可
    这样输入http://localhost:2001/1/,是不是就可以访问了?嘿嘿
    可能读者会有疑问了:现在设置的这个和第二种设置的有什么区别?
    现在设置的其实是进行*映射,即把所有的文件都进行url重写处理程序处理
    这时其实就可以把.html 以及自带的.aspx等映射去掉,同样可以生成.html/.aspx/ url
    好了,如果还想其他的扩展大家就尽情扩展吧。4.现在再讲一下*映射要注意的问题
    因为*映射是把所有的文件都要交给url称谢程序去处理,这样就会造成会把站点下的图片以及css
    或者一些下载的rar等文件都要去处理,这样会慢吗?答案是毫无疑问的,肯定会增加内存的,
    单单一网站的图片以及上传的图片就足以让程序减慢成倍的速度了。
    那有什么办法进行处理吗?
    当然,我们可以进行以下处理就可以把速度还原了:
    方法1,把存放图片所在的文件夹转化成一个虚拟目录,在然后移处该虚拟目录*.*的映射,这样一来他的url重写程序就不会去处理图片文件,当然存放别的不需要url重写程序的文件也要象图片文件夹做类似的处理。
    虚拟目录设置办法:在iis站点右击目录点属性,目录-点创建
    然后点配置,在弹出窗口内删除:通配符应用程序映射(执行顺序)下添加的*.*的映射即可。
    方法2,把不需要*.*映射的文件夹设置新站点和原来的站点分开,这样在原来的站点访问的时候用
    新站点的域名即可。比如把图片设置站点http://images.baike.cn,这样在http://baike.cn站点访问图片的时候就必须使用http://images.baike.cn/名称.gif,这样就避免了所有问件处理。
    以上两种方法即可提高不少速度了,当然第一种药方便的多。5.最后处理回发的情况大家可以在网上搜下即可。6.有个缺陷得提出来说说:例如你有1000个页面,拿就得在WEBCONFIG里写1000组<RewriterRule></RewriterRule>!!!!
    不知道谁有什么好办法解决吗?
      

  3.   

    URLRewriter 不好用,还是在别人的代码里挖吧。哈哈
      

  4.   

    我已经把MSDN看了两遍了....有个问题还是没有解决!如   <rewrite url="~/11.aspx" to="~/Default.aspx" />在postbackurl中,我写上 ~/Default.aspx  则在URL地址栏中显示的为  ~/Default.aspx  
    并不是我想要的 ~/11.aspx
    反正写上 ~/11.aspx 是肯定可以重写定位到~/Default.aspx页面的
    有人说把所有的postbackurl写成 如 ~/11.aspx  那样是可以实现,不过忒麻烦!,页面多的话怎么办?
    难道你们都是这样做的??
      

  5.   

    http://www.urlrewriting.net/159/en/downloads.html
    用这上免费组件好了,也有详细的使用说明,很好用