代码之家  ›  专栏  ›  技术社区  ›  schooner

使用querystring重写/重定向url?

  •  0
  • schooner  · 技术社区  · 16 年前

    在这种情况下,我有一堆带有查询参数的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页面,然后在代码中处理PARAM和重定向逻辑,假设我们可以很容易地从基本URL到真实页面进行ReReDebug。

    我想真正的问题是在“ABC”节目中到处转悠?X=456“,如果没有实际的页面存在,也没有任何扩展来放置页面。

    2 回复  |  直到 16 年前
        1
  •  0
  •   Mike Buckbee    16 年前

    你可以使用 HTTPRedirection . 它将执行您所描述的操作:为每个“abc”目录创建一个过滤器,方法是编写一个正则表达式来匹配传入的url,并将其输出到您控制的url页面。这将发生在堆栈的应用程序部分之前,即使知道它,也应该无缝工作。

        2
  •  0
  •   dnord    16 年前

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

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

    推荐文章