如何在 --no-brunch Phoenix API-only 应用程序中服务 robots.txt

How to serve robots.txt in a --no-brunch Phoenix API-only app

我有一个 Phoenix JSON API 唯一的应用程序,它是使用 --no-brunch 创建的并且不提供静态内容。

我看到机器人试图抓取我的 robots.txt 时出现错误,它不存在,并呈现 500.json-api 视图,当 Phoenix.Template.HTML.encode_to_iodata! 尝试编码 JSON.

有没有更好的方法来服务 robots.txt 而无需进行静态资产编译,这样我就可以避免这些错误,并且最好禁止抓取我的 API?

只需将以下内容添加到您的 lib/my_app/endpoint.ex 文件中:

  plug Plug.Static,
    at: "/", from: :my_app, gzip: false,
    only: ~w(robots.txt)

您当然需要更改 my_app 部分。

如果您要部署到 Heroku,您应该:

  • 如果您正在使用 brunch 并编译其他资产,请包括 Phoenix 静态构建包。可以在此处找到有关部署到 Heroku 的文档以及有关静态构建包的注释:https://phoenixframework.org/docs/heroku
  • 如果使用 --no-brunch,则取消注释 .gitignore,它会忽略 /priv/static 以支持 /web/static