日期:2014-05-18  浏览次数:20351 次

使用UrlRewritingNet实现URL重写时遇到的问题?
我想实现类似WordPress的那种以文章名为文件名的重写.
就例如有一篇文章的标题为Hello   world     其原始地址可能为article.aspx?id=1
但我想利用UrlRewritingNet这个组件..将URL重写为   Hello+world.html   或Hello+world.aspx.
当然,该文件名是在发表文章时就已经存在数据库里面的......
现在碰到的问题是不知要在何时注册该重写规则~
我尝试在BeginRequest里面写下以下代码:
RegExRewriteRule   rule   =   new   RegExRewriteRule();
                //rule.VirtualUrl   =   "^~/haha/haha1.aspx ";
                rule.VirtualUrl   =   ((HttpApplication)sender).Context.Request.Path;
                rule.DestinationUrl   =   "~/Default2.aspx?a=10 ";
                rule.IgnoreCase   =   true;
                rule.Rewrite   =   RewriteOption.Application;
                rule.Redirect   =   RedirectOption.None;
                rule.RewriteUrlParameter   =   RewriteUrlParameterOption.ExcludeFromClientQueryString;
                UrlRewriting.AddRewriteRule( "ttt ",   rule);
会发现.随便输入一个地址的话,第一次将会找不到资源.必须刷新一次才能转到Default2.aspx的页面..原因似乎是第一次进入的时候.名为ttt的规则还没被创建..第二次刷新,才能够正常重写

------解决方案--------------------
一般是在webconfig中通过正则表达式进行匹配的
------解决方案--------------------
好像是这样的哦!
如果你有1万多个页面,那真的要写1万多个!
如果是同一页面,也就是说同一文章,只是参数不同,那可以通过正则表达式进行匹配
------解决方案--------------------
不懂,关注一下