创建像重定向虚拟目录一样工作的任意 URL

创建像重定向虚拟目录一样工作的任意 URL

我是服务器管理方面的新手,所以我甚至不确定我是否在正确的地方发布了此内容。如果这个问题看起来不太好,请正确回答。谢谢。

一段时间以来,我一直在想 URL 缩短服务等网站是如何工作的。例如,使用流行服务 bit.ly 缩短的 URL 如下所示:http://bit.ly/2bgrkx

我的问题是,他们的服务器是如何设置的,以处理这些末尾带有唯一短代码的 URL?此外,如何在 IIS 环境中实现这种处理,目的当然不同,不是 URL 缩短。例如,我还看到了 twtvite.com 对这些 URL 的操作。

我认为他们可能正在创建重定向的虚拟目录,但这似乎有点太不寻常了。

非常感谢,我希望这个问题不是太不合适。

答案1

大多数 URl 缩短器的工作方式如下 - 所有未请求 CSS / 或其他静态文件的请求都被路由到脚本,该脚本从短 URL 标识符中找到相应的真实 URL。

然后有两种方法:a)发送 HTTP 标头,命令浏览器重定向。最流行的选择是 302 Found 。根据 HTTP 规范,它是临时重定向,但大多数浏览器将其实现为永久重定向。更好的选择是 301 Moved permanently。b)发送带有 META 标记的 html 文档,指示浏览器重定向。大多数情况下,这不是一个好主意,因为所有重定向都是临时的,有效的 HTML 文档比简单的 HTTP 标头更耗费带宽。正确的方法是在协议级别而不是内容级别执行此类操作。

如果你想了解特定的 URL 缩短服务是如何工作的,你可以使用 Firebug (https://addons.mozilla.org/en-US/firefox/addon/1843) 查看所有请求以及带有 HTTP 标头的响应。

在 apache 中,您可以使用 mod_rewrite 来重写 URL,在 IIS 中 -http://www.isapirewrite.com/(可能有更好的解决方案,但我不再是活跃的 IIS 用户)。

答案2

您可以看到维基百科关于 URl 缩短的文章和本文如何实现它。

PS:最好不要使用可预测的缩短算法。

希望这可以帮助。

答案3

您想查看 URL 别名。我不知道如何在 IIS 中执行此操作,因为我是 Apache 用户。

答案4

编辑:看看,来自 Lifehacker。

两种简单的方法:

1)使用 HTTP 标头进行重定向:在 PHP 中可以这样做:

header ("Location: http://example.com/");

我不确定这会生成哪些 HTTP 代码,但对我来说它确实有效。有关更多信息,请访问PHP.net 网站。以下是一些ASP 信息

2)使用 HTML Meta 标签刷新到新位置。

<meta http-equiv="refresh" content="0;url=http://example.com/" />

看到这个维基百科文章以获取有关元标记的更多信息。

相关内容