URL中的# /代表什么?

19

我正在开发ROR网站应用程序。我的网页URL如下所示-

http://dev.ibiza.jp:3000/facebook/report?advertiser_id=2102#/dashboard

我明白advertiser_id是2102,但我不理解#/dashboard指的是什么?

4个回答

37
在URL中跟随“#”符号的部分通常不会在请求页面时发送到服务器。如果您打开Web检查器并观察页面的请求,您将看到“#/dashboard”部分根本没有包含在请求中。
在正常(基本HTML)网页上,“#”符号可用于链接到页面内的某个部分,使浏览器在页面加载后跳转到该部分。
在复杂的JavaScript重型Web应用程序中,常常使用“#”符号后面跟着更多的URL路径,例如“ www.example.com/some-path#/other-path/etc”,URL的“ other-path/etc”部分不会被服务器看到,但可以供JavaScript在浏览器中阅读,并根据该URL路径显示不同的内容。
因此,在您的情况下,URL的第一部分是对服务器的请求:

http://dev.ibiza.jp:3000/facebook/report?advertiser_id=2102

URL的第二部分可能用于Javascript在页面加载后显示特定视图:

#/dashboard

#符号还用于创建片段标识符,通常用于链接到网页内的特定内容(例如使浏览器跳转到页面上的某个部分)。

正如其他人所提到的,这对SEO有影响。为了索引此类页面,您可能需要采用不同的技术,以使“#符号后面”的内容可被搜索引擎访问。


1

提供另一个例子

这是一个请求github获取Java类的源代码。

https://github.com/spring-cloud/spring-cloud-consul/blob/master/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistry.java

通过在末尾添加"#L90",网络浏览器将发送相同的请求,并滚动到第90行并突出显示代码。

https://github.com/spring-cloud/spring-cloud-consul/blob/master/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistry.java#L90

你的网络浏览器向Github服务器发出相同的请求,但在锚定的情况下,在接收响应后执行了额外的操作,即突出显示所选行。


1

# 符号被称为锚点,它会重定向到 HTML 页面上的特定位置。

这是一种爬取技术,您可以阅读更多此处


5
链接顶部注明:“此建议已于2015年10月被正式弃用”。你应该获取当前的内容。 - code_dredd

0

在#后面是位置的哈希值;接下来的!被搜索引擎用于帮助索引AJAX内容。之后可以是任何东西,但通常呈现为路径的形式(因此有/)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接