Angular 8 个站点地图和 robots.txt

Angular 8 sitemap and robots.txt

我使用 angular 创建了一个 angular 应用程序 8. 我正在 Google 上引用我的网站。我在项目路径中添加了 sitemap.xml 和 robot.txt,但是当我尝试通过这样做在浏览器中访问文件时:

https://blablawebsite.fr/sitemap.xml

路由模块正在获取路由,找不到页面。我怎样才能确保 sitemap.xml 和 robots.txt 没有被路由模块选中?

您需要先考虑将您的项目转换为 Angular Universal。 Google 和其他搜索引擎机器人不能也不会浏览您的应用程序,因为所有这些都是事后发生的。

从这里开始:https://angular.io/guide/universal

很多人误解了所有这些是如何工作的,并且在意识到网站和 SPA 之间的区别之前深入了解他们的项目。没什么大不了的,您仍然可以让您的 angular 应用通过服务器端渲染

获得排名

使用 Angular UniversalCloud Functions for Firebase 进行托管,我将 sitemap.xmlrobots.txt 放在 src 中。然后在 angular.json"assets" 添加它,像这样:

...
"assets": [
  "APP_NAME/src/robots.txt",
  "APP_NAME/src/sitemap.xml",
],
...

效果很好 :)

与我对已接受答案的理解相反,tt 不需要 将 angular 通用添加到项目中只是为了添加 sitemap.xml 或 robots.txt.

正如 @David 在他的评论中更简洁地说的那样,您需要做的就是:

  1. Add 把文件放到你的项目中(在favicon.ico旁边)在/src
  2. 将它们添加到项目>架构师>构建>选项>资产在您的angular.json 像这样:
 "assets": [
                  "src/favicon.ico",
                  "src/assets",
                  "src/robots.txt",
                  "src/sitemap.xml"
                ],

解释的比较详细here

添加。备注:

  • 确保您不会不小心仅在 angular.json 中捕捉到“测试”的资产,它们在浏览文件时更早出现
  • 如果您的 robots.txt 文件无效的警告不再出现在 Chrome 开发工具
  • 然而,即使使用 robots.txt,Google 以外的搜索引擎也无法很好地处理没有服务器端呈现的 Angular SPA(例如通过 Angular Universal)。甚至 Google 的功能也存在争议。这个guy解释得很好。
  • 我的回答适用于 Angular 10 和 11,其他版本我不知道