问题标签 [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.
javascript - AngularJS - 将 # 重新路由到 #!
我正在使用 $routeProvider 并且刚刚将其设置为使用 hashbang。
现在所有外部链接都不正确,因为它们引用“mysite/#/page”
是否可以让 $routeProvider 将任何 "mysite/#/page" 链接重新路由到 "mysite/#!/page" ?
我已经更改了所有内部链接,所以它们没问题,但其他网站上的外部链接将停止工作。
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_ 的任何信息?无论没有键=值对,谷歌可以吗?
ajax - 用于 SEO 的 CouchDB URL 重写
我正在尝试使用大量客户端 Jquery/AJAX 魔术创建一个完全托管在 CouchDB 上的整个站点(也没有 nginx 反向代理)。现在我正在使它对 SEO 友好。我正在使用虚拟主机和 URL 重写将流量从根路由到我的 index.html 文件:
虚拟主机:
example.com /dbname/_design/dd/_rewrite/
在我的重写定义中:
- 在您的友好 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 重写创建了这样的规则?
javascript - Angularjs : $locationProvider.hashPrefix("!") ;
我想将 url 显示为 "www.test.com/!#" 因为我正在使用 $locationProvider.hashPrefix("!") ;但它将网址显示为“www.test.com/#!” . 我想要 ”!” 在哈希之前而不是在哈希之后。
谢谢
angularjs - 使用 ngInclude 时,Angular 1.1.5 url 重复
我在模板中使用带有 ngInclude 的 angular 1.1.5。每当我加载页面时,我都会在 hashbang: http://localhost/home#/home
、http://localhost/account#/account
等之后得到一个重复的路径。当ngInclude
页面中有指令时会发生这种情况(我认为这也发生在ngView
)。我没有在这个应用程序中使用任何路由,总体而言这是一个非常简单的设置。
在模块配置中使用$locationProvider.html5Mode(true)
似乎可以解决这个问题,但我不想使用它,因为它并不真正适合这个应用程序的设计。
这似乎不会发生在 Angular 1.2.0-RC.2 中,但我还不想迁移。任何已知的解决方法?谢谢。
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_=
——但我真的必须建立一个虚假的网站才能得到答案吗?)
javascript - 空 URL 哈希导致页面跳转到 js 事件
我有一个带有下一个和上一个按钮的照片库。如果单击其中一个按钮时由于某种原因导致我的一种 javascript 方法被破坏,它将向 URL 添加一个哈希,即 www.google.com# 。我知道哈希可以被赋予一个 div id 以跳转到页面的该部分,但是当它为空白时,它会在我的页面周围跳转几次,我不确定它的目标是什么。我曾想过尝试从 url 中删除哈希,但随后我必须确保在每个操作中都这样做,这似乎是一种不好的做法。如果散列对页面上的操作没有影响,我更愿意。
python - Python脚本给出`:没有这样的文件或目录`
我有几个 python 脚本工作得很好,但是如果我尝试从 bash 运行它,一个脚本(截至今天早上)开始给我这个错误:
: 没有相应的文件和目录
我可以通过这样做来运行“损坏”python script_name.py
脚本以及通过:set list
VI中的选项破坏的脚本,如this question所示 - > View line-endings in a text file
两个文件似乎都使用相同的字符(a $
)结束,所以我有点不知如何从这里开始。set list
具体来说,如果方法不正确,如何实际“看到”行尾。
PS:脚本是可执行的,shebang 在那里,我说这只是这 1 个脚本在周末之前工作正常,但它从今天早上开始给我这个错误。
- 编辑: -
运行脚本dos2unix
确实让它再次工作,但我想知道任何方式来可视化在 VI(M) 中以某种方式结束的行,或者为什么 Geany 首先以某种方式转换了行结尾(因为我从来没有在 dos/ Windows系统无论如何)。
javascript - 如何将旧的哈希 URL 重定向到 Ember.js 中的哈希爆炸?
我使用这种方法:
现在我有一个带有 hashbangs 的网站。但是人们也会访问只有哈希但没有 hashbang 的旧 URL。
那么,如果有人访问旧式 url,如何将 URL 从仅哈希更改为 hashbang?
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?