如何在 --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
。
我有一个 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
。