【问题标题】:Adding a hash prefix at the config phase if it's missing如果缺少哈希前缀,请在配置阶段添加
【发布时间】:2013-10-16 11:19:36
【问题描述】:

我现在正在将 phantom 集成到基于 Angularjs 的 Web 应用程序中。

This精品文章说我应该调用$locationProvider.hashPrefix()方法将前缀设置为'!'来自 SEO 的原因(允许爬虫拦截 URL 的 _escaped_fragment 组件)。

问题是我之前没有考虑过,我的一些 URL 如下所示: #/home.

我也许有一种方法可以植入这个“!”在 APP 的配置功能中以编程方式(以防它不存在)请求 URL,而不必手动编辑大量标记。

【问题讨论】:

  • 您必须手动编辑哪些“标记”?你有很多硬编码的网址吗?
  • 我也遇到过类似的问题。目前,当我使用错误的前缀时,我会看到此错误。 '错误:无效的 url“一些 url”缺少哈希前缀“#!”。'对于拥有旧 url 方案链接的用户来说,能够处理错误或让路由器使用 else 功能会很棒。

标签: angularjs seo phantomjs google-crawlers


【解决方案1】:

我遇到了类似的问题,我手动(搜索/替换)浏览了所有链接并修复了它们。

我遇到的另一个问题是外部网站使用的是旧格式,即 http://plinkplink.net/#/event/3 而不是新格式 http://plinkplink.net/#!/event/3

我为此所做的修复不是严格来说 angularjs 惯用的,但它确实可以完成工作。我已将此脚本添加到页面的标题中。它只是将带有#的页面重定向到带有#!的页面:

    <script>
        var loc = window.location.href
        if (loc.indexOf("#") != -1 &&  loc.indexOf("#!") == -1 ){
            window.location.href = loc.replace("#", "#!");
        }
    </script>

希望对你有帮助。

【讨论】:

  • 这是一个可能的解决方案,谢谢您的回答。 P.S,您可能希望将 ngCloak 指令应用于您的网页标题,这样浏览器将更准确地对其进行索引,并且受众不会看到 page.title() 的实例。
【解决方案2】:

您是否链接到 # 值?即 - &lt;a href="#/my/page"&gt; 如果是这样,你不应该这样。您应该链接到不带 # 前缀的 url,我相信它会解决您的问题。

【讨论】:

    猜你喜欢
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多