问题标签 [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 回答
441 浏览

angularjs - Hashbang、prereder.io 和机器人

我对搜索机器人将如何抓取我的 ajax 网站感到有些困惑。

http://www.example.com包含 3 个链接

  • #!/abc
  • #!/xyz
  • #!/123

我的<meta name="fragment" content="!">页面头部包含了这个,所以机器人应该使用下面的 url 访问这些链接,我正在使用 prerender.io 来提供一个页面

机器人在抓取这些页面时会如何表现?当他们在这些页面上找到新链接时,网址会是什么样子?

  1. #!/abc1 => http://www.example.com?_escaped_fragment_=/abc#!/abc1
  2. #!/abc2 => http://www.example.com/#!/abc/abc2
0 投票
1 回答
885 浏览

angularjs - 在 AppEngine 的根路径上处理 _escaped_fragment_

我正在使用 Google App Engine 来托管一个带有 Python 网络服务的 AngularJS 应用程序。根路径 / 设置为返回 index.html,/api/* 请求转到 Python 控制器以进行 Web 服务调用,任何其他路径都转到静态资源(图像、视图等)

我正在尝试使用 hashbang/_escaped_fragment_ 技术来获取搜索引擎索引的应用程序设置。据我了解,http://www.whatever.com/# !/news 的网址将被搜索引擎转换为http://www.whatever.com/?_escaped_fragment_=/news

编写一些代码来处理该请求不是问题,但是让该代码在根路径上侦听是一个问题,因为它映射到 index.html

在发出 _escaped_fragment_ 请求时,是否有元标记或其他东西告诉搜索引擎使用不同的路径(而不是 /)?

如果没有,Google App Engine 中是否有办法请求/提供 index.html,但如果存在 _escaped_fragment_ 查询参数,那么转到控制器来处理请求?

目前,我发现唯一可行的方法是为根路径设置一个控制器,用于检查 _escaped_fragment_ 参数。如果存在,它会为搜索引擎呈现内容,如果不存在,它会读取 index.html 并将其写入响应。我希望有更好的选择。

0 投票
3 回答
4637 浏览

php - 从 Wix 到 WordPress 的 301 重定向

我工作的一家公司有一个基于 WIX 的网站。我在 WordPress 上重新创建了站点,移动了主机并重定向了域。然后,我尝试使用标准的 .httaccess 文件 301 重定向将页面重定向到 WordPress 站点上的新 URL。

重定向 301 /#!product/prd1/1063533171/42%22-workstation-(mc-42) http://www.mydomain.com/product/workstation/

我现在发现 WIX 在 url 链接结构中使用了 hashbang (#!)。

如何执行我的 301 重定向并保留我之前的页面排名?

0 投票
1 回答
159 浏览

ruby - Ruby On Rails 4.1 将站点 URL 添加到哈希链接

我正在尝试使一些基础选项卡在 rails 4 中工作,因此我创建了必要的标记。

触发标签切换的链接是常见的哈希链接(例如“#my-tab”)。当我单击其中一个链接时,rails 会自动将 href 属性替换为完整的 url,如下所示:http: //my-site.dev/index#my-tab

这只是破坏了选项卡的行为。

有什么我看不到的东西或一些导轨配置吗?

更新

我发现它是 Turbolinks。为每个链接禁用 turbolink 是不够的,因为是 turbolinks.js 本身导致了这种行为。

我必须通过删除该行来完全禁用 turbolinks:

来自我的资产/javascripts/application.js。

如果有人提出更原子和更优雅的解决方案,我会很高兴将答案标记为正确!

0 投票
2 回答
757 浏览

java - Java Servlet - 重定向 URL

我网站的 URLwww.example.com/?id=THEPRODUCTID#iTHEPRODUCTID一个字母数字字符串。请注意,#i 出现在末尾。

问题是谷歌爬虫忽略了#i指定的Sitemap.xml,所以我在谷歌上看到的结果是www.example.com/?id=THEPRODUCTID

作为一个快速的解决方案,我想创建一个重定向www.example.com/?id=THEPRODUCTIDwww.example.com/?id=THEPRODUCTID#i. 我不确定如何进行映射,或者它是否应该是过滤器、重定向、转发……非常感谢任何指导。

0 投票
1 回答
1561 浏览

javascript - 使用 hashbang 防止用户将路线留在单页应用程序中

我将 Sammy.js 用于我的单页应用程序。我想创建类似于 SO 的功能(当您输入问题并尝试离开页面时,它会询问您是否确定)。

如果它不是单页应用程序,我会执行以下操作:

问题在于,在单页应用程序中,用户实际上并没有离开页面,而是更改了document.location.hash他的页面(他可以通过关闭页面离开页面)。有没有办法为 SPA 制作类似的东西,最好是 sammy.js?

0 投票
1 回答
100 浏览

ajax - 如何让我的主机检测到 _escaped_fragment_ 并获取相应的 HTML?

我有一个 AJAX 网站,我在我的网址中使用 hashbangs (#!),目的是在谷歌机器人替换 #! 时提供正确的 HTML 版本。使用 ?_escaped_fragment_。

如何将带有 _escaped_fragment_ 的 url 路由/代理/重定向到相应的 HTML 页面?我找不到关于这部分过程的具体文档,我的第一个想法是我应该使用 301 或 302 重定向,但有人告诉我情况并非如此,尽管没有提供更多信息。

0 投票
1 回答
803 浏览

javascript - history.pushState 真的可以处理哈希爆炸网址吗?

最近,我阅读了很多关于 hash-bang url 与 history.pushState 的对比,以构建对 SEO 友好的 AJAX 站点。似乎每个人都同意 pushState 是更好的方法,所以我想使用它。

这就是问题所在:我有一个单页网站和(在服务器上)一个包含大约 300 万个条目的数据库——我没有所有这些条目的静态页面,而是使用 AJAX 获取它们并将它们插入到站点中(如果用户单击某个链接或执行搜索)。

使用 HashBang-URLs 我知道蜘蛛会寻找不同的 URL (escaped_fragment...),所以在服务器端我可以提供一个“丑陋”的页面,它不包含任何样式,但只包含我想要索引的内容。

用户可以为 URL 添加书签并获得漂亮的内容,因为 URL 不同(#!...)并且 Javascript 将生成内容。

另一方面,使用 history.pushState,我将被迫使用像 '...getItem.php?itemid=356375' 这样的 URL(对吗?)——但现在,我不能再在这里提供丑陋的内容,因为用户可能会为这些 URL 添加书签.

所以,简而言之:

Hash-Bang 让我们可以专注于通过 javascript 渲染客户端漂亮的内容,同时为搜索引擎提供“丑陋”的纯内容页面——PushState 迫使我们在不使用 javascript 的情况下一直提供漂亮的内容?

有什么解决方法吗?有什么方法不必在服务器端(在我的情况下是 PHP)上提供漂亮的内容,同时仍然让用户可以为提供漂亮内容的 URL 添加书签(通过 Javascript)?

0 投票
2 回答
88 浏览

javascript - HTML 哈希问题 - IE8

请有时间阅读这篇文章。

因此,如果我的 Web 应用程序在登录后发现还没有散列,则会以编程方式附加(/mypage 到 /mypage#hash)散列。在其他浏览器中,即使页面刚刚附加了散列,当我单击浏览器的Back按钮时它进入登录页面(这种行为是我想要的 - /mypage#hash to /loginpage)。但在 IE8 中,单击Back按钮后会转到同一页面但没有哈希(/mypage#hash 到 /mypage)。

对此有任何解决方法或想法吗?真的很感激。如果不够清楚,问我。我会告诉你的。

谢谢!!!!

0 投票
1 回答
2671 浏览

angularjs - 如何在angularjs中禁用IE8和IE9上的#hashbang重定向

我有一个 angularjs (v 1.2.19) 应用程序,它由两个单独的 html 页面组成(或者实际上这些是一个文件夹中的两个单独的 angularjs 应用程序):

  • 索引.html
  • 编辑.html

我在 IE 8 和 9 上遇到了一些众所周知的兼容性问题(两者都不支持 html5 历史 API)。我的配置包含:$locationProvider.html5Mode(true).hashPrefix('!');

我在应用程序中没有任何路由 - index.html 和 edit.html 可以被视为单独的 angularjs 应用程序 - 具有单独的 angularjs 初始化等。

问题看起来像这样:每当我打开链接:http://server/app或者http://server/app/index.html一切正常。

每当我打开链接时:http://server/app/edit.html从 ng-click 或直接在浏览器中,页面会自动重定向到http://server/#!app/edit.html

如何禁用“hashbang”重定向?Edit.html 不是 index.html 的一部分,因此应该直接加载它,而不需要任何 index.html 重定向和“哈希”路由。

我尝试了下面的代码,但它导致了无限循环的重定向......

任何帮助表示赞赏。