我正在使用一堆经典的ASP内容对传统的ASP.NET站点进行现代化。有几十个asp
和aspx
页面只是重定向:
'this is a file called Something.aspx
<%@ Language=VBScript %>
<% Response.Redirect("/Something/Default.aspx", true) %>
这些文件遍布整个应用程序,我想要删除所有这些文件,并将此重定向逻辑合并到一个表中的某个表中:
From,To
/Something.aspx,/Something/Default.aspx
/sub/SomeOtherThing.asp,/overhere/NewVersion.aspx
...
然后,在Application_BeginRequest方法中,我想我会检查此表,如果传入请求与From
条目匹配,我会进行重定向。但这似乎效率很低,因为那时每个请求都会产生表查找的开销。
我还考虑过让丢失的文件请求导致404错误,然后执行查找和重定向,因此开销只会发出少得多的请求,但这似乎有点缺憾。
所以问题是:完成我想要做的事情的最佳(或合理有效)方法是什么?
答案 0 :(得分:1)
您可以使用URL Rewrite的Rewrite Map功能来处理重定向。
<rewriteMap name="MyRewriteMap">
<add key="a.html" value="b.html" />
<add key="c.aspx" value="d.aspx" />
<add key="e.php" value="f.php" />
</rewriteMap>
或者,您可以实现HttpModule来处理重定向。从数据存储加载映射并将其缓存以备将来请求。然后根据映射检查任何404错误的请求URL。仅处理404错误比检查每个请求更有效。
答案 1 :(得分:0)
你在IIS7(或更高版本)?如果你是,你可以安装url rewrite模块并将所有重定向放在web.config
中http://www.iis.net/learn/extensions/url-rewrite-module/using-the-url-rewrite-module