我刚创建了原始的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)前缀?
答案 0 :(得分:18)
这是可能的,而且你现在确实这样做了。它只是不按照你的想法做到。
考虑链接到此时浏览器的作用:
href="index.html"
当你链接到这个时会怎么做?:
href="index.com"
或者这个?:
href="www.html"
或者:
href="www.index.com.html"
浏览器不知道你的意思,它只知道你告诉它的内容。如果没有前缀,它将遵循当前HTTP地址的标准。前缀是告诉它需要完全从新的根地址开始。
请注意,您 http:
部分,您可以这样做:
href="//www.google.com"
浏览器将使用当前协议(http
,https
等),但//
告诉它这是一个新的根地址。
答案 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之类的审核工具将无法执行其工作