gpt4 book ai didi

将 Elixir Phoenix 请求从根域重定向到 www

转载 作者:行者123 更新时间:2023-12-04 13:58:38 25 4
gpt4 key购买 nike

我们在 Heroku 上有一个 Phoenix 应用程序,在 Route 53 上有 DNS。我们按照这篇博文设置了正确的 http 到 https 重定向:
http://building.vts.com/blog/2015/11/02/route53-ssl-naked-domain-redirect/

一切正常,剩下的就是将根重定向到子域 www。

有没有推荐的方法来以 Phoenix 的方式进行设置?

最佳答案

简单 plug在应用程序端点顶部的重定向中。

lib/app/endpoint.ex :

defmodule App.Endpoint do
use Phoenix.Endpoint, otp_app: :app

socket "/socket", App.UserSocket

plug App.Plugs.WWWRedirect
# ...
end

lib/app/plugs/www_redirect.ex :
defmodule App.Plugs.WWWRedirect do
import Plug.Conn

def init(options) do
options
end

def call(conn, _options) do
if bare_domain?(conn.host) do
conn
|> Phoenix.Controller.redirect(external: www_url(conn))
|> halt
else
conn # Since all plugs need to return a connection
end
end

# Returns URL with www prepended for the given connection. Note this also
# applies to hosts that already contain "www"
defp www_url(conn) do
"#{conn.scheme}://www.#{conn.host}"
end

# Returns whether the domain is bare (no www)
defp bare_domain?(host) do
!Regex.match?(~r/\Awww\..*\z/i, host)
end
end

请注意,自 nothing in lib is reloaded 起,您需要重新启动服务器才能生效。 .

关于将 Elixir Phoenix 请求从根域重定向到 www,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35691974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com