自己参考某教程写了个URL重写模块,在BeginRequest事件中判断是否需要重写。若需要,就从数据库的sitemap表中检索请求的URL(数据字段为URL),如果存在,返回真正的URL地址(数据字段为RealURL)。程序工作正常,但有一点:由于购买的空间可以放多个网站,为了便于管理,就为每个网站在根目录下建立了一个子文件夹(其实当前也就是存放了一个网站)。例如,当前网站的所有页面文件和配置文件全部存放于"abc"子文件夹中(程序文件位为abc/bin/中)。页面的链接全部从数据库的URL字段读取,但最终形成的URL地址不是"http://www.ABC.com/Products/",而是"http://www.ABC.com/abc/Products/",比预期多了程序根目录的文件夹名称URL重写后生成的伪静态地址也是这样,浏览器地址栏中为"http://www.ABC.com/abc/Products/"。如果更改,能搞成"http://www.ABC.com/Products/" ?谢谢!P.S.:目前流行的URLRewirting.dll + web.config配置正则表达的方式好像可以,下载了源代码研究了一晚上,没瞅明白是怎么把程序目录的名称去掉的主要是不懂C#
肯定能改
sql查找 匹配 替换 成你想要的格式
可以在数据库操作
end: $1$2
放在哪一部分执行?页面.aspx文件中放置了一个Literal控件. 程序中根据数据表内容生成Literal的Text值. 部分代码如下:Dim modelList as New List (of SiteMap.Model)
modelList = BLL.SiteMap.GetAllItems
ltlMenu.Text= "<ul>"
For each myModel as SiteMap.Model In modelList
ltlMenu.Text +="<li><a title='" & mymodel.Title & "' href='" & ResolveUrl(myModel.URL) & "'>" & mymodel.Title & "</a>"Next
ltlMenu.Text+="<ul>"
...最终页面上形成的URL是 http://www.ABC.com/abc/Produts/Food/这种. 与使用Literal服务器控件不关系吧?
用自带的路由功能啦,动态编程做规则也很方便。
http://www.cnblogs.com/xray2005/archive/2011/07/03/2096938.html
Lookup: ~/abc/(正则不会写,意思就是abc开头的,不管后面是什么内容)
Sendto: XXX (仅去掉/abc,保留后面不变)能否实现?谢谢!