通过修改微软URLRewriter组建(根据江振宇blog中的介绍)实现了
<RewriterRule>
<LookFor>http://(\w*)\.dilinlin\.com/</LookFor>
<SendTo>~/blog/user/$1/index.html</SendTo>
</RewriterRule>
这种效果 ,但是
<RewriterRule>
<LookFor>http://(\w*)\.dilinlin\.com/(\w*)\.html</LookFor>
<SendTo>~/blog/user/$1/$2.html</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>http://(\w*)\.dilinlin\.com/archives_(\w*)_(\w*)\.html</LookFor>
<SendTo>~/blog/user/$1/archives/$2/$3.html</SendTo>
</RewriterRule>
这两种效果 总是出现404错误。查阅了很多资料,还是找不出问题所在,专门测试了组件在类BaseModuleRewriter.cs里BaseModuleRewriter_AuthorizeRequest()方法修改 Rewrite(app.Request.Url.ToString(), app); 改为
Rewrite("http://net.dilinlin.com/archives_2008_47038.html", app);
这时地址栏路径输入成类似 <LookFor>http://(\w*)\.dilinlin\.com/</LookFor>
的路径,则可以正确重写到<SendTo>~/blog/user/$1/archives/$2/$3.html</SendTo>
,可见 应该组件没问题 ,问题到底出在哪里呢?请高手 指点。
如果可以的话希望可以考虑到css样式问题 和表单提交问题谢谢
另外一个方案是ISAPI rewrite
http://www.weijingtai.com/2009/04/08/isapi-rewrite/
相比微软URLRewriter, 有如下优点:
第一:效率较高。
第二:对html解析要好很多
也可以参考:
http://www.cnblogs.com/notus/archive/2007/03/13/673222.html
http://www.cnblogs.com/teddyma/archive/2006/09/11/500790.html
也可以自己搜:
iis6?
iis6的话,对于.html请求默认是不采用asp.net 接管的,直接判断该文件是否存在,存在返回文件,不存在返回404
试试修改.html注册的请求处理程序为asp.net的isapi,看有没有用