没有http(s)前缀的Href

时间:2017-05-05 11:26:25

标签: html href

我刚创建了原始的html页面。这是:example 这是它的标记:

<a href="www.google.com">www.google.com</a>
<br/>
<a href="http://www.google.com">http://www.google.com</a>

如您所见,它包含两个链接。第一个人的href没有'http'前缀,当我点击此链接时,浏览器会将我重定向到不存在的页面https://fiddle.jshell.net/_display/www.google.com。第二个href有这个前缀,浏览器生成正确的URL http://www.google.com/。是否可以使用www.something.com等href,而不使用http(s)前缀?

4 个答案:

答案 0 :(得分:18)

这是可能的,而且你现在确实这样做了。它只是不按照你的想法做到。

考虑链接到此时浏览器的作用:

href="index.html"

当你链接到这个时会怎么做?:

href="index.com"

或者这个?:

href="www.html"

或者:

href="www.index.com.html"

浏览器不知道你的意思,它只知道你告诉它的内容。如果没有前缀,它将遵循当前HTTP地址的标准。前缀是告诉它需要完全从新的根地址开始。

请注意,您 http:部分,您可以这样做:

href="//www.google.com"

浏览器将使用当前协议(httphttps等),但//告诉它这是一个新的根地址。

答案 1 :(得分:10)

您可以在路径前使用//来省略协议。这是一个例子:

<a href="//www.google.com">Google</a>

通过使用//,您可以告诉浏览器这实际上是一个新的(完整)链接,而不是相对的链接(相对于您当前的链接)。

答案 2 :(得分:0)

我已经在React项目中创建了一个可以帮助您的小功能:

const getClickableLink = link => {
    return link.startsWith("http://") || link.startsWith("https://") ?
      link
      : `http://${link}`;
  };

您可以像这样实现它:

const link = "google.com";
<a href={getClickableLink(link)}>{link}</a>

答案 3 :(得分:-1)

就SEO而言,仅在路径前面使用//来省略协议是一个非常糟糕的主意。 好的,大多数现代浏览器都可以正常运行。另一方面,大多数机器人会在扫描您的站点时遇到麻烦。 Masjestic不会计算这些链接的流量。诸如SEMrush之类的审核工具将无法执行其工作