问题标签 [hashbang]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
141 浏览

javascript - AngularJS - 将 # 重新路由到 #!

我正在使用 $routeProvider 并且刚刚将其设置为使用 hashbang。

现在所有外部链接都不正确,因为它们引用“mysite/#/page”

是否可以让 $routeProvider 将任何 "mysite/#/page" 链接重新路由到 "mysite/#!/page" ?

我已经更改了所有内部链接,所以它们没问题,但其他网站上的外部链接将停止工作。

0 投票
0 回答
175 浏览

ajax - google ajax 爬取重写

我有一个包含一些 ajax 内容的网站。ajax内容页面的链接如下

!/category/id/ident/name/

apache rewrite RewriteRule ^category/([^/]+)/([^/]+)/([^/]+)/$ /somephp.php?cat_id=$1&ident=$2 [L] 将这些链接重定向到 / somephp.php?cat_id=id&ident=ident

我假设谷歌向 /_escaped_fragment_?category/id/ident/name/ 发出请求

也就是说,新的谷歌请求中没有键=值对。然后我假设我可以将其重写为 /googlecontent.php?cat_id=id 以便提供 googles html 快照。我无法找到有关 _escaped_fragment_ 的任何信息?无论没有键=值对,谷歌可以吗?

0 投票
1 回答
444 浏览

ajax - 用于 SEO 的 CouchDB URL 重写

我正在尝试使用大量客户端 Jquery/AJAX 魔术创建一个完全托管在 CouchDB 上的整个站点(也没有 nginx 反向代理)。现在我正在使它对 SEO 友好。我正在使用虚拟主机和 URL 重写将流量从根路由到我的 index.html 文件:

虚拟主机:

example.com /dbname/_design/dd/_rewrite/

在我的重写定义中:

在为 SEO 优化网站时,Google 要求您做一些事情

  • 在您的友好 URL 中使用井号 (#!) 告诉网络爬虫您是一个具有网络可爬取材料的 AJAX 站点:http://example.com/index.html#!home
  • 使用 http 查询参数提供该 AJAX 页面的 HTML 转义片段:http://example.com/index.html?_escaped_fragment=home

我尝试了以下没有运气:

据我所见,CouchDB 的 URL 重写器无法区分带有 args 和没有 args 的 URL。有没有人幸运地通过 CouchDB URL 重写创建了这样的规则?

0 投票
1 回答
20899 浏览

javascript - Angularjs : $locationProvider.hashPrefix("!") ;

我想将 url 显示为 "www.test.com/!#" 因为我正在使用 $locationProvider.hashPrefix("!") ;但它将网址显示为“www.test.com/#!” . 我想要 ”!” 在哈希之前而不是在哈希之后。

谢谢

0 投票
1 回答
177 浏览

angularjs - 使用 ngInclude 时,Angular 1.1.5 url 重复

我在模板中使用带有 ngInclude 的 angular 1.1.5。每当我加载页面时,我都会在 hashbang: http://localhost/home#/homehttp://localhost/account#/account等之后得到一个重复的路径。当ngInclude页面中有指令时会发生这种情况(我认为这也发生在ngView)。我没有在这个应用程序中使用任何路由,总体而言这是一个非常简单的设置。

在模块配置中使用$locationProvider.html5Mode(true)似乎可以解决这个问题,但我不想使用它,因为它并不真正适合这个应用程序的设计。

这似乎不会发生在 Angular 1.2.0-RC.2 中,但我还不想迁移。任何已知的解决方法?谢谢。

0 投票
1 回答
509 浏览

web-crawler - 编写一个网络爬虫——我如何模仿谷歌看到#!在网址中?

我正在编写一个网络爬虫,并且想做谷歌在它#!检索到的页面中遇到 URL 时所做的事情。如果 URL 没有 #! 谷歌将它添加到最终将获取和索引的页面列表中,但是当它看到 #! 时它会做一些特别的事情!如Google 的“Ajax 抓取入门”文档中所述。

当 Google 看到包含#!它的 URL 时,它会修改该 URL,对修改后的 URL 执行 HTTP GET,然后将检索到的页面编入索引,就好像它已检索到其中包含的 URL #!(而不是它实际检索到的 URL)。我正在尝试模仿它所做的转换,但没有完全描述。

引用的页面部分描述了 Google 修改 URL 的操作,并告诉网站作者如何反转转换,以便他们可以知道原始 URL 是什么,并可以返回他们希望在#!URL 下编入索引的数据。该页面说的一件事是:Note: The crawler escapes certain characters in the fragment during the transformation. To retrieve the original fragment, make sure to unescape all %XX characters in the fragment. More specifically, %26 should become &, %20 should become a space, %23 should become #, and %25 should become %, and so on.

提到的“转换”是替换#!?_escaped_fragment=转义后面的文本中的一些特殊字符#!。该文本告诉网站作者通过(部分)在修改后的 URL 后面的文本中取消转义 %XX 来反转转换?_escaped_fragment=。问题是,我如何知道要转义哪些特殊字符,以便我的爬虫可以请求与 Google 请求相同的替换 URL?

在引用的段落中,谷歌列出了一些它会转义的内容,但最后的“等等”表明转义字符的完整列表更长——但没有完全描述。

从理论上讲,每个字符(甚至是字母)都可以转义为 %XX,但每个网站正确处理它的机会并不高。如何确定 Google 会转义哪些字符,以便我的爬虫请求与 Google 相同的 URL?

(如果我控制了一个记录传入 URL 的网站,并且我可以让 Google 抓取,我可以创建一个页面,其中包含许多在 #! 之后带有特殊字符的 URL,并通过查看任何 URL 来查看转义的内容有?_escaped_fragment_=——但我真的必须建立一个虚假的网站才能得到答案吗?)

0 投票
3 回答
3428 浏览

javascript - 空 URL 哈希导致页面跳转到 js 事件

我有一个带有下一个和上一个按钮的照片库。如果单击其中一个按钮时由于某种原因导致我的一种 javascript 方法被破坏,它将向 URL 添加一个哈希,即 www.google.com# 。我知道哈希可以被赋予一个 div id 以跳转到页面的该部分,但是当它为空白时,它会在我的页面周围跳转几次,我不确定它的目标是什么。我曾想过尝试从 url 中删除哈希,但随后我必须确保在每个操作中都这样做,这似乎是一种不好的做法。如果散列对页面上的操作没有影响,我更愿意。

0 投票
4 回答
51104 浏览

python - Python脚本给出`:没有这样的文件或目录`

我有几个 python 脚本工作得很好,但是如果我尝试从 bash 运行它,一个脚本(截至今天早上)开始给我这个错误:

: 没有相应的文件和目录

我可以通过这样做来运行“损坏”python script_name.py脚本以及通过:set listVI中的选项破坏的脚本,如this question所示 - > View line-endings in a text file

两个文件似乎都使用相同的字符(a $)结束,所以我有点不知如何从这里开始。set list具体来说,如果方法不正确,如何实际“看到”行尾。

PS:脚本是可执行的,shebang 在那里,我说这只是这 1 个脚本在周末之前工作正常,但它从今天早上开始给我这个错误。

- 编辑: -

运行脚本dos2unix确实让它再次工作,但我想知道任何方式来可视化在 VI(M) 中以某种方式结束的行,或者为什么 Geany 首先以某种方式转换了行结尾(因为我从来没有在 dos/ Windows系统无论如何)。

0 投票
1 回答
789 浏览

javascript - 如何将旧的哈希 URL 重定向到 Ember.js 中的哈希爆炸?

我使用这种方法:

使用 Ember.js 的 Hashbang URL

现在我有一个带有 hashbangs 的网站。但是人们也会访问只有哈希但没有 hashbang 的旧 URL。

那么,如果有人访问旧式 url,如何将 URL 从仅哈希更改为 hashbang?

0 投票
2 回答
2615 浏览

javascript - 使用 Backbone Router 处理 Hashbang 进行 SEO 内容索引?

我的SPA使用Backbone.js路由器,它使用 pushstate 和散列 URL 作为后备方法。我打算使用Google 的建议来制作 AJAX web-app crawlable。也就是说,我想将我的网站索引到PhantomJS生成的静态 .html 文件中,并通过 URL 将它们传递给 Google:

mysite.com/?_escaped_fragment_=key=value.

请记住,该站点不为最终用户提供静态页面(它仅适用于支持 Javascript 的浏览器)。如果您导航到mysite.com/some/url.htaccess文件,则设置为始终提供服务,mysite.com/index.php并且主干路由器将读取 URL 以显示该 URL 的 JavaScript 生成内容。

此外,为了让 Google 索引我的整个站点,我计划创建一个站点地图,该站点地图将是一个hashbang URL列表。URL 必须是 hashbanged,以便 Google 知道使用_escaped_fragment_key URL 索引该站点。

呜呜呜……

(1) 这种方法行得通吗?

(2) 由于backbone.js 不使用hashbang URL,当用户通过Google 到达时,如何将hashbang URL 转换为pushstate URL?

参考:https ://stackoverflow.com/a/6194427/1102215