反向链接简介

原创 2004年08月16日 16:59:00

起因

大家都知道什么是直接链接。不管是在浏览网页的时候带蓝色下划线的文本,或者是在各种书上见到的象以“见卷二 276 页”格式注释的那种稍旧的版本,这些链接都引导读者在大量的资料中寻找某个主题以及与之相关的信息。尽管直接链接帮助很大,但它始终一成不变,这是一个比较棘手的问题。我碰巧有一本难得的 George Orwell 1945 版的 Animal Farm,该书自然没有引用 1984 书中的内容,因为 1984 是他四年后写的。当然,您今天买到的任何新版本的 Animal Farm 都有一个简明的前言,列出了 Orwell 的所有著作,但我私下里一直希望能找到一种方法,使我那本破旧不堪、几乎散架的书也可以这样更新。

更新印刷资料的唯一途径就是重新印刷,这一点显而易见,但奇怪的是,联机内容的更新也必须如法炮制。唯一不同的是,对于 Web 而言,无需浪费额外的纸张。几乎每一个页面都需要进行打开、编辑、保存以及在 Web 上重新发布等操作,只有这样才能反映新内容。正是因为在许多旧文档中添加新链接很不方便,才使我想到反向链接这一概念。反向链接指新文档(目标文档)中的一条指令,它指出哪些旧文档(源文档)要引用新文档中的内容。

反向链接概念

了解反向链接的另一种方法是将其与对方付费电话进行比较。与常规电话(打电话者即付费者)不同,对方付费电话将打电话者和付费者分开,由接电话者支付费用。与此相似,常规链接在源文档内部进行声明和显示,而反向链接则在目标文档内部进行声明。换句话说,不象常规那样在文档 A 中使用指向文档 B 的指令,一个反向链接在文档 B 中使用一个让文档 A 指向自己的请求。整个反向链接的概念如图 1 所示。]

edcb0101

1. 直接链接对比反向链接

作为一种快捷方式,反向链接的声明可包含多个 href,用于同时列出所有目标文档。

edcb0101

2. 反向链接扩展语法

例如,下面的代码示例演示了 XSLT 中条件模板的用法,通过一行代码即可使四个相关语言参考 文档可以访问自己。


但是,某个页面如何得知其他文档请求显示该页面的所有反向引用链接呢?方法之一是在每次打开某个页面时扫描所有其他文档,以搜索相关的反向链接声明。但是,当文档数量很多时,这种方法即暴露出效率极低的缺点。因此,我又想到一个方法,即对所有文档只扫描一次,然后将所有声明编译并排列在一个中间链接组中,如图 3 所示。

edcb0101

3. 一个链接组示例

让我们来看看如何创建链接组。首先,编译器扫描启动时所在的文件夹 (baseFolder) 及其子文件夹中的所有 XML 文件,然后将结果保存到相应的树中(该树对扫描的目录结构进行了镜像)。这些树使每个文档能够立即定位它的条目,而开发人员也能够将他们的项目文件夹移到其他文件夹、驱动器或网络上,甚至在 Internet 上发布。树有一个相对根 (baseFolder),只包含相对链接,只要项目文件夹的内部结构保持不变,所有链接就保持原样。

在链接组中每个文件的条目中,编译器将复制从相应文档中找到的所有反向链接。对所有文档执行复制操作时,将运行一个算法,将反向链接“请求”转换为实际的直接链接并将 link:reqBy(Requested By 的缩写)元素存储在实际显示该链接的文档中,而不是显示在请求文档的条目中。

最后,如果我们想知道对于某个特定文档而言哪些文档将对其进行引用,只需在链接组中查看该文档条目下的内容,因为这里集中了来自其他文档的所有请求。

edcb0101

4. 一个演示反向链接的文档示例

回头再看看对方付费电话示例,这里链接组的作用相当于中间电话运营商。电话运营商通知付费者要求其支付通话费用的请求,与此类似,链接组将其他文档请求显示某一页面的所有链接通知给该页面。图 5 完整地显示了反向链接方案。

edcb0101

5. 反向链接方案

请记住,每次更改信息系统时一定要对链接组进行编译;否则,旧链接组将无法与更新或新添加的内容及其发出的链接请求保持同步。

反向链接适用的范围

我想让我的文章在 MSN.comYahoo!WWW Consortium 这些门户网站上引用,但是仅在页面上添加以下代码声明可能还不够:


尽管反向链接确实大大扩展了直接链接的功能,但它们也有自身的局限性。也就是说,它们对远程资源无效,因为您必须为整个 Internet 编译一个链接组,并将 http:// 作为基文件夹,而这纯粹是异想天开。不过,我想说的是,虽然在两个友好站点之间设置一个交换反向链接组的接口(模仿 B2B 信息交换通道)是可能的,但是还是以后再专门介绍此类反向链接吧。

在您的信息系统范围内,反向链接不失为一个理想选择,它不仅可以使旧文档包含新的相关内容,还可以使信息系统中不断变化的部分与固定不变的系统进行相互链接。在几乎所有的编程语言帮助文件中,语言参考 和用户指南 部分之间始终存在着矛盾,我们以此为例进一步说明问题。由于某种原因,多数用户指南 文章都会精确重定向到相关语言参考 页面,而语言参考 却根本不会提到用户指南 中的文章。为什么是这样呢?很简单,语言参考是语言的核心,这个核心即使在重大的版本升级时也不会改变。也许我有些保守,但即使在当今的 .NET 时代,我还是觉得我那本 1981 年版、介绍 BASIC 的 Microsoft 手册很有用。与此相反,用户指南 却是手册中变化最多,最不可预知的部分。用户指南 中包含有关不同语言元素用法的重要介绍和最新示例,而且编写它的时候通常语言参考 已经很完善,那么谁有时间再去更改或更新语言参考 呢?

这样的结果很不幸,但总是无法避免。保守的语言参考 内容从来不随新内容和现代技术而更新(就象我的那本 1945 年版的 Animal Farm 一样),即便其中包含错误信息。而现在,此问题可以通过反向链接解决方案得到解决。对于用户指南 文章、编码人员园地 演示以及其他类型的动态内容,都可以使用反向链接请求在相关的语言参考页面上显示。

编译器

编译器函数

Init() 主函数。

GetFiles(whatFolder, root, path)

对编译器启动时所在的目录及其子目录中的文件夹和文件进行映射。为每个文件调用 GetReverseLinks

GetReverseLinks(xmlDoc

从给定文档中检索反向链接集并将其传递给 BuildReqLinks

BuildReqLinks(root)

为每个反向链接声明创建一个直接链接,并将其存储在实际将显示该链接的文档下的链接组中。

路径/URL 相关函数(由编译器和提供支持的样式表使用)
链接组 从反向链接声明中过滤链接组并对其进行彻底格式化。

在链接组编译完毕后立即显示该链接组,并报告断开的反向链接。

提供支持的样式表
GetPath (path) 提供文件的路径,并返回存储该文件的文件夹的路径。

GetRelURL(src,dest)

获取两个绝对路径并计算出源文档到目标文档间的相对链接。

NormalizePath(path)

删除路径字符串(例如 "./""path/../"

提供支持的样式表

Reverse-linking-library.xslt

访问链接组,获取所显示文档的请求链接并显示它们。要在您的文档中启用反向链接,请在样式表中添加以下三行代码:

 

致谢

感谢 Chris Lovett,正是通过与他进行的一系列详尽的讨论,才使我意识到我在本演示中实现的并非 XLink,而只是其中的一小部分。XLink 的创始人之一,Steven J DeRose 在他的 Introduction to Xlink 这篇文章中提到,反向链接至少解决了 XLink 所解决的六个问题中的三个,即:

双向链接

批注只读文档的链接

链接数据库

由于我发现 Xlink 中的 arc、locator 和 traverse 这些术语容易混淆,所以我决定将它们以及项目与 XLink 的密切关系都放在后台。

此外,还要感谢 Dare Obasanjo 对本文进行了审阅并提出了宝贵的建议。最后,还要感谢上帝。

正向连接、反向链接 && SSH 正向代理、反向代理(未完待续)

浅析 SSH 正向代理 方向代理。
  • omg2hei
  • omg2hei
  • 2017-04-05 02:21:12
  • 456

10种主要方式,以建立反向链接

10种主要方式,以建立反向链接   反向链接是导入链接到一个网站或网页。它们也通常被称为导入链接,入站链接,反向链接和向内链接。   为什么反向链接如此重要?   反向链接是决定一个网站的搜索引擎排名...
  • pvcok
  • pvcok
  • 2014-07-23 10:41:51
  • 293

将一个单向链表反向链接

        其实是一个很简单的题目,不过我用递归实现了一下,个人感觉写的挺漂亮的,于是就决定贴出来秀一下,呵呵,代码如下: //这是个公共函数,也就是你需要的接口public void rever...
  • andycpp
  • andycpp
  • 2007-08-14 00:53:00
  • 3557

How to: Shellcode to reverse bind a shell with netcat(如何使用netcat进行shellcode反向链接)

Imagine you found a vulnerability in a web server and decided to take over that machine to do your d...
  • wgwgnihao
  • wgwgnihao
  • 2015-05-23 11:47:48
  • 816

什么叫反向链接?什么是死链接?什么是错误链接?

什么叫反向链接?什么是死链接?什么是错误链接? 什么叫反向链接? 经常听到大家在答疑论坛里说反向链接多么重要,但我一头雾水,到底什么是反向链接? 看以上这行内容中,“答疑论坛”这几个字链...
  • Tanhui1
  • Tanhui1
  • 2014-03-29 00:28:42
  • 521

超牛逼的在线网站seo分析工具:Ahrefs反向链接检查

这个seo工具如果用来分析对手网站外链结构,很多具体的数据信息查询的非常清楚。这些数据都很有利于对网站进行优化分析。 下面就简单介绍一下这个工具的几个特色用法 一:外部链接综合参考报告...
  • weixin_41596501
  • weixin_41596501
  • 2018-02-06 18:36:54
  • 47

将一个单向链表反向连接

  • 2011年11月28日 11:29
  • 633B
  • 下载

英文网站 高质量反向链接的20个方法

反向链接,对提高站点的PR,作用很大;高质量的反向链接,更能在段时间内大幅提高新站的PR。这里分享20个获取高质量反向链接的方法。 www.HappNews.com, PR 6 去 Citiz...
  • fjnu2008
  • fjnu2008
  • 2012-04-23 20:08:20
  • 341

python 反向连接后门

1)首先daemon化2)然后用 netstat命令,检测是否指定的IP(192.168.1.111)连接上,有,则激活无,则睡眠几分钟(这个时间可根据需要自行调节)3)激活后,开一个子进程,创建so...
  • yatere
  • yatere
  • 2011-10-30 01:52:40
  • 1181

反向连接打开cmdshell

源代码: #include #include #pragma comment(lib,"Ws2_32") #define LISTEN_PORT 9090 int main() { WS...
  • feier7501
  • feier7501
  • 2013-07-22 22:22:13
  • 869
收藏助手
不良信息举报
您举报文章:反向链接简介
举报原因:
原因补充:

(最多只允许输入30个字)