URL重写/使用Querystring重定向?

时间:2009-08-28 12:38:28

标签: .net iis mod-rewrite redirect query-string

我的情况是,我有一堆带有查询参数的网址,用于基本上重定向到各种网站,有点像短网址或索引。

Ex:www.mysite.com/abc?x=123重定向到www.google.com www.mysite.com/abc?x=456重定向到www.yahoo.com 等等...

问题是现在或之前没有实际页面“abc”,这些链接是在网站上创建和发布的。现在的问题是找到一种简单的方法使它们处于活动状态,这样点击后就可以进行正确的重定向。

目前在IIS Windows服务器上。核心站点本身是基于.NET的。

有没有办法使用htaccess文件或类似文件(假设我们使用IIS的mod-rewrite isapi插件)来允许创建这些重定向?我们有数百个这样做。

我能想到的唯一另一个选择是将这些选项重定向到一个实际的asp.net页面,该页面随后将处理param并重定向代码中的逻辑,从而可以轻松地从基本URL到实际页面进行重定向。

我猜的真正问题是当没有实际页面存在时,用“abc?x = 456”来解决delaing,并且无论如何都没有给出页面放置。

2 个答案:

答案 0 :(得分:0)

您可以使用HTTPRedirection。它将完全按照您的描述进行操作:通过编写正则表达式来匹配传入的URL并将其输出到您控制的URL页面,为每个“abc”目录创建一个过滤器。这将在您的堆栈的应用程序部分之前发生,甚至意识到它并且应该无缝地工作。

答案 1 :(得分:0)

如果abc不存在,您的服务器将以404响应。在ASP.NET中,您可以选择如何响应它 - 它在web.config中作为CustomErrors。打开它,然后重定向到一个花哨的404页面(也许你已经这样做了)。然后,花哨的404页面可以检查请求的查询字符串(它被作为另一个查询字符串传递到自定义错误页面)以查看它是否是有效的重定向,存在于您的数据库中等。只需执行Response.Redirect( )从那里。

这使您可以维护一些逻辑,将这些关系存储在数据库中,而不是将它们全部写入过滤器配置。