2013-02-21 64 views
2

.NET泛型重定向我有一个包含多个文件,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的电话,获取资源的名称,替换.html的.aspx文件并重定向到带有修改资源名称的新目录?

这是可能的吗?

我使用的.NET framework版本4 IIS 7

回答

1

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

它的功能很多,如果您尝试访问文件夹/ p​​age.aspx服务器将自动获取folder2/page.aspx。

您可以提供精确匹配为每个页面(乏味),也可以使用正则表达式,并把它与一个规则做(提供的所有页面都在一个文件夹相同的名称。)

什么你想要做的就是抓住任何要进入的文件夹/ .aspx,并使服务器返回folder2/.aspx。

所以你捕捉请求文件夹// ASPX正则表达式可能是这样的:

folder/(\w*).aspx 

括号\ W *将使其可用于回引用({R:1})

folder2/{R:1}.htm 

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

如果你想重定向一切,只需带走.aspx和.htm。所以:

folder/(\w*) 

folder2/{R:1} 

下面是一个简单的教程,告诉您在哪里做,在IIS。确保在创建规则时在动作类型下选择重定向而不是重写。

URL Rewrite

+0

谢谢丹尼尔,我会给它一个去!感谢你的帮助! – QFDev 2013-02-21 21:19:39

+0

没问题!希望它工作正常!如果遇到任何问题,请大声呼喊! – 2013-02-21 21:24:44

+0

进一步研究,我可能是错的,但似乎URL重写仍然会显示请求的URI在地址栏中,但会从匹配正则表达式中的页面拉内容?例如。如果文件夹/ file1.aspx被调用,它将在地址栏中保留该地址,但将呈现folder2/file1.htm的内容。如果是这种情况,页面中的相关链接将无法正常工作。我希望它会做一个直接的response.redirect。 – QFDev 2013-02-23 21:34:49