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

时间:2016-09-17 17:50:35

标签: elixir phoenix-framework robots.txt

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

我发现机器人试图抓取我的robots.txt时出现错误,这是不存在的,并呈现500.json-api视图,导致Phoenix.Template.HTML.encode_to_iodata!尝试编码JSON时发生异常。

有没有更好的方式来提供robots.txt而不进行静态资产编译,这样我就可以避免这些错误,理想情况下不允许抓取我的API?

1 个答案:

答案 0 :(得分:2)

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

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

当然,您需要更改my_app部分。

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

  • 如果您正在使用早午餐并编译其他资源,请包含Phoenix static buildpack。有关静态buildpack的说明,可以在此处找到有关部署到Heroku的文档:https://phoenixframework.org/docs/heroku
  • 如果使用--no-brunch,则取消注释忽略.gitignore /priv/static的{​​{1}} {/ 1}}。