.net 使用Querystring重写/重定向URL?

.net 使用Querystring重写/重定向URL?,.net,iis,mod-rewrite,redirect,query-string,.net,Iis,Mod Rewrite,Redirect,Query String,我们有一种情况,我有一堆带有查询参数的URL,用于基本重定向到各种站点,有点像一个短URL或索引 例如:www.mysite.com/abc?x=123,它重定向到www.google.com www.mysite.com/abc?x=456,重定向至www.yahoo.com 等等 问题是现在或以前都没有实际的“abc”页面,这些链接是在网站未知的情况下创建和发布的。现在的问题是找到一种简单的方法使它们处于活动状态,这样当单击时将执行正确的重定向 这当前位于IIS Windows服务器上。核心

我们有一种情况,我有一堆带有查询参数的URL,用于基本重定向到各种站点,有点像一个短URL或索引

例如: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页面,然后在代码中处理参数和重定向逻辑,assumign我们可以轻松地从基本URL重定向到实际页面


我想真正的问题是,当没有实际的页面存在并且没有提供任何扩展来放置页面时,如何使用“abc?x=456”进行Delaining。

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

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


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

谢谢,我们现在有一个404,但我们希望在这个过程中不要将其检测为404。如果可能的话,我们希望直接单独处理它。在标题中返回404会对在搜索引擎中列出有一些不良影响,等等。如果你在一个错误中干净地重定向404,你不吞下它吗。aspx?我隐约记得,你甚至可以在重定向之前发送301,让搜索引擎知道abc?x=123实际上指向example.com。或者到那时已经太晚了?我相信到那时已经太晚了,因为404是返回Error.aspx的一部分