【问题标题】:URL Rewriting/Redirects with Querystring?使用查询字符串进行 URL 重写/重定向?
【发布时间】:2010-11-23 17:21:29
【问题描述】:

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

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

我猜真正的问题是在不存在实际页面并且没有扩展名来放置页面的情况下绕过“abc?x=456”。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,我们现在确实有 404,但我们不希望在此过程中将其检测为 404。如果可能,我们希望不直接单独处理。
    • 在标题中返回 404 对在搜索引擎等中列出有一些不好的影响。
    • 如果您在 Error.aspx 中干净地重定向它们,您不会吞下 404 吗?我依稀记得你甚至可以在重定向之前发送一个 301 让搜索引擎知道 abc?x=123 实际上指向 example.com。还是说为时已晚?
    • 我认为到那时为时已晚,因为 404 是返回 Error.aspx 的一部分
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-05-06
      • 1970-01-01
      • 2014-11-03
      • 2012-12-21
      • 2012-07-22
      • 1970-01-01
      • 2016-02-12
      • 2012-11-29
      相关资源
      最近更新 更多