代码之家  ›  专栏  ›  技术社区  ›  QFDev

从文件夹进行.NET通用重定向

  •  2
  • QFDev  · 技术社区  · 12 年前

    我有一个包含多个ASPX文件的文件夹

    folder/file1.aspx
    folder/file2.aspx
    folder/file3.aspx
    etc..
    

    我需要将这些文件移到另一个文件夹,并将其扩展名更改为静态html文件,如下所示。

    folder2/file1.htm
    folder2/file2.htm
    folder2/file3.htm
    etc..
    

    我试图优雅地重定向用户,但我不确定如何继续?在.NET中,是否可以拦截对aspx文件的请求并重定向到新目录中的html等效文件?

    这也需要用程序来完成,我不能把所有的aspx文件都放在第一个文件夹中,在page_load中有301个重定向。我该怎么打电话给 文件夹/any_resource ,获取资源的名称,将.aspx替换为.htm,并使用修改后的资源名称重定向到新目录?

    这有可能吗?

    我正在IIS 7上使用.NET framework版本4。

    1 回复  |  直到 12 年前
        1
  •  1
  •   Daniel Wardin    12 年前

    了解URL重写功能。IIS7支持它。它可以通过web.config文件完成,也可以使用IIS GUI创建规则。

    它所做的基本上是,如果您试图访问文件夹/page.aspx,服务器将自动获取folder2/page.aspx。

    您可以为每个页面提供一个精确的匹配(乏味),也可以使用正则表达式并用一条规则完成(前提是下一个文件夹中的所有页面都有相同的名称)

    您要做的是捕获任何进入文件夹/.aspx的内容,并使服务器返回folder2/.aspx。

    因此,用于捕获对文件夹//aspx的请求的正则表达式可能如下所示:

    folder/(\w*).aspx
    

    \w*周围的括号将使其可用于反向引用({R:1})

    folder2/{R:1}.htm
    

    以上是您的重定向URL。它所做的是获取文件名,并在folder2中查找.htm版本的文件名。

    如果你想重定向所有内容,只需删除.aspx和.htm。所以:

    folder/(\w*)
    

    folder2/{R:1}
    

    这里有一个快速教程,向您展示在IIS中的操作方法。创建规则时,请确保在“操作”类型下选择“重定向”而不是“重写”。

    URL Rewrite