自己参考某教程写了个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#

解决方案 »

  1.   

    asp.net的话建议楼主用isapi rewrite啊
      

  2.   

    to  楼主:用重写及正则其实就是把http://www.ABC.com/abc/Products/这样的路径,替换成http://www.ABC.com/Products/这样的路径。正则很简单。如果楼主其他都弄好了,要正则话,我可以给你写一个。
      

  3.   

    soonfei:其他的都弄好了,就是那个abc文件夹让人烦。如能提点,不胜感激!另请教一个问题:还写了一个名为SitemapHandler的HttpHandler处理程序,主要用于搜索引擎。计划是先将http://www.ABC.com/sitemap.xml提交给搜索引擎,在蜘蛛们造访时,调用处理程序,根据数据库内容生成sitemap.xml,而这个文件其实是不存在的。处理程序已在web.config注册过,在本地IIS上测试没问题。但上传到空间后发现处理程序不管用,该如何解决?P.S.:空间是.net 4.0环境,安装IIS7.0,程序池是兼容(或说经典,即Classic),按理说应该没有问题。
      

  4.   


    肯定能改
    sql查找  匹配 替换 成你想要的格式
    可以在数据库操作
      

  5.   

    begin:(http:\/\/www\.ABC\.com\/).+?(Products\/)
    end:  $1$2
      

  6.   


    放在哪一部分执行?页面.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服务器控件不关系吧?
      

  7.   

    asp.net4.0时代了啊,还要用第三方组件吗??
    用自带的路由功能啦,动态编程做规则也很方便。
    http://www.cnblogs.com/xray2005/archive/2011/07/03/2096938.html
      

  8.   

    唉,我的问题仅仅是如何去掉程序文件夹的名称...怎么越来越复杂...回到起点, 如果使用第三方URLRewriting组件(就是web.config是注册并添加正则表达的那个), 能否实现
    Lookup: ~/abc/(正则不会写,意思就是abc开头的,不管后面是什么内容)
    Sendto: XXX (仅去掉/abc,保留后面不变)能否实现?谢谢!