2

我有一个包含多个 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 重定向。如何获取对folder/any_resource的调用,获取资源名称,将 .aspx 替换为 .htm 并使用修改后的资源名称重定向到新目录?

这是可能吗?

我在 IIS 7 上使用 .NET 框架版本 4。

4

1 回答 1

1

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

几乎它的作用是,如果您尝试访问 folder/page.aspx 服务器将自动获取 folder2/page.aspx。

您可以为每个页面提供完全匹配(繁琐),也可以使用正则表达式并使用一条规则完成(假设所有页面在下一个文件夹中具有相同的名称。)

您要做的是捕获任何前往文件夹/.aspx 的内容并让服务器返回文件夹2/.aspx。

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

folder/(\w*).aspx

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

folder2/{R:1}.htm

以上是您的重定向 URL。它的作用是获取文件名并在文件夹 2 中查找它的 .htm 版本。

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

folder/(\w*)

folder2/{R:1}

这是一个快速教程,向您展示如何在 IIS 中执行此操作。创建规则时,请确保在操作类型下选择重定向而不是重写。

网址重写

于 2013-02-21T19:22:42.283 回答