【问题标题】:How to add sitemap.xml in an angularjs app如何在 angularjs 应用程序中添加 sitemap.xml
【发布时间】:2016-03-01 04:45:10
【问题描述】:

我使用 generator-angular-fullstack 创建了一个 angularjs 应用程序。除了一个,一切都很好。我正在尝试将 sitemap.xml 添加到此应用程序,以便搜索引擎爬虫可以对其进行索引。使用提到的方法here,我在我的 client/ 目录中创建了一个 sitemap.xml。当我使用 grunt serve 启动我的应用程序时,它在开发环境中正常工作,但在生产环境中,当我使用 grunt serve:dist 启动应用程序时它无法正常工作。这是我的 robots.txt https://crowdvirality.com/robots.txt 每当我尝试访问 https://www.crowdvirality.com/sitemap-secure.xmlhttps://www.crowdvirality.com/sitemap.xml 时,它都会将我重定向到 https://www.crowdvirality.com/error 页面。

我的 app.js 包含以下规则:

  .config(function ($stateProvider, $urlRouterProvider, $locationProvider, $httpProvider, cfpLoadingBarProvider) {
    $urlRouterProvider
      .otherwise('/error');
  })

同样的设置适用于本地开发环境,但在生产环境中失败。谁能给我一些指示我做错了什么?

谢谢

【问题讨论】:

    标签: javascript angularjs xml gruntjs sitemap


    【解决方案1】:

    好吧,我认为这是一个常见的问题。

    您基本上是在尝试提供文件而不是路线。

    前几天我在用 pdf 做这个

    你必须在你的路由提供者中创建一个带有文件扩展名的路由。

    例如...

    .state('sitemap.xml', {url: '/sitemap.xml'})
    

    .在状态名称中至关重要,这让 Angular 知道您正在提供文件而不是路由

    ATM 因为你没有这个状态,所以你正在退回到你的其他状态

    【讨论】:

    • 一个小疑问,如果是这样,那么它如何正确地为 robots.txt 提供服务?而且添加这个状态与sitemap.xml的实际位置无关,对吧?
    • 我相信的 url 指向文档的位置,状态名称是浏览器 url 中的内容。不知道为什么 robots.txt 工作正常。
    • 发现问题。我的 gruntfile 没有在 dist/ 目录中复制 xml 文件。我为此添加了一条规则和宾果游戏。一切正常。无需添加这些额外的路线
    猜你喜欢
    • 1970-01-01
    • 2013-12-29
    • 2016-10-29
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2018-08-12
    • 2019-12-27
    • 1970-01-01
    相关资源
    最近更新 更多