【问题标题】:Do I need a separate page for each piece of content with AngularJS?AngularJS 的每条内容都需要一个单独的页面吗?
【发布时间】:2016-02-10 19:58:58
【问题描述】:

背景:我正在创建一个包含公司描述、历史、行业、股价等的股票市场应用程序,并允许用户随意添加新公司。当用户想要阅读特定公司的信息时,他/她只需在搜索框中输入代码,页面就会更新为该公司的内容。我计划使用 MySQL 数据库来存储静态内容信息,例如描述、PHP 作为服务器端语言、用于动态数据的 API(例如股票价格)以及用于前端开发的 AngularJS,特别是为了消除不断的页面重新加载和加快开发周期。

问题 1(1 家公司 = 1 页?): 最初,我打算通过 $http 创建 AJAX 请求,然后简单地填充该请求生成的带有 {{content}} 的 html 模板,但后来我听说为每条内容创建单独的页面也是一种常用方法,并且是SEO 的首选(基本上,URL 看起来像这样:www.mysite.com/#/main/page vs www.mysite.com /main/page/company1.php 分别用于第一种和第二种方法)。如果在这种情况下这些方法都不正确,哪种方法确实是首选方法或最佳实践是什么?

问题 2(SEO/Sitemap): 现在,如果我坚持第一种方法($http),我意识到搜索引擎爬虫将难以识别页面,因为从技术上讲,没有' t 任何有内容的页面;它们都是动态生成的。搜索引擎不会找到我的页面是真的吗?如果是,有没有办法解决这个问题?

非常感谢!

【问题讨论】:

    标签: php angularjs ajax seo


    【解决方案1】:

    使用 Angular,您可以轻松地为每条内容创建一个唯一的 URL。为此,您可以使用路由器(参见https://docs.angularjs.org/api/ngRoutehttps://angular.github.io/router/getting-started)。它允许您的应用程序:

    • 在用户请求 URL 时加载并显示正确的内容,
    • 当您的用户浏览网站时更新地址栏中的 URL。

    因此,您的用户将能够共享链接、书签内容……

    对于机器人,您需要提供 HTML 快照。可以使用SEO4Ajax 之类的服务来完成。或者,如果你想自己做,有一个很好的教程here

    【讨论】:

    • 太棒了。非常感谢。这正是我一直在寻找的
    【解决方案2】:

    Google 可以索引 javascript 网站(由 Google 于 2014 年 5 月宣布),但 Google 可能无法正确呈现或索引 Angular 网站。需要技术 SEO 专业知识来确保您拥有针对正确关键字的 SEO 友好的网站架构,包括页面标题、元标记、h1 等。开发人员可能会发现他们的网站只是部分呈现和索引,或者根本没有。

    您可以采取措施,例如使用$locationProvider.html5Mode(true); 删除AngularJS 的默认hashtagged-URLs。

    还普遍认为,需要将 Angular 网站的渲染版本提供给爬虫,以实现良好的搜索性能。 (其中一项服务是 Prerender.io)。

    【讨论】:

    • 谢谢。即使没有主题标签,我的理解是我需要扩展每家公司的 URL 以让爬虫知道有一个不同的页面,对吗?例如www.mysite.com/#/main/page/company1 vs www.mysite.com/#/main/page/ 内容被动态加载到页面而不更新URL。抱歉,对使用 Angular 很陌生
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多