From 6be1789b8d22a749d233303b5526c1a996e2d7cf Mon Sep 17 00:00:00 2001 From: Johanna Larsson Date: Sun, 10 Aug 2025 13:09:13 +0100 Subject: [PATCH] Handle all blog URLs with redirect --- lib/jola_dev_web/plugs/blog_redirect.ex | 19 +++++++++++-------- .../jola_dev_web/plugs/blog_redirect_test.exs | 14 ++++++++------ 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/lib/jola_dev_web/plugs/blog_redirect.ex b/lib/jola_dev_web/plugs/blog_redirect.ex index e95248d..b691ccc 100644 --- a/lib/jola_dev_web/plugs/blog_redirect.ex +++ b/lib/jola_dev_web/plugs/blog_redirect.ex @@ -11,14 +11,17 @@ defmodule JolaDevWeb.Plugs.BlogRedirect do ids = JolaDev.Blog.ids() path = strip_path(conn.request_path) - if path in ids do - conn - |> put_resp_header("location", "https://jola.dev/posts/" <> path) - |> send_resp(:moved_permanently, "") - |> halt() - else - conn - end + path = + if path in ids do + "posts/" <> path + else + path + end + + conn + |> put_resp_header("location", "https://jola.dev/" <> path) + |> send_resp(:moved_permanently, "") + |> halt() else conn end diff --git a/test/jola_dev_web/plugs/blog_redirect_test.exs b/test/jola_dev_web/plugs/blog_redirect_test.exs index e2a5de7..d6c26b8 100644 --- a/test/jola_dev_web/plugs/blog_redirect_test.exs +++ b/test/jola_dev_web/plugs/blog_redirect_test.exs @@ -18,16 +18,18 @@ defmodule JolaDevWeb.Plugs.BlogRedirectTest do assert conn.halted end - test "does not redirect invalid paths on blog.jola.dev", %{conn: conn} do - original_conn = + test "redirects invalid paths on blog.jola.dev to jola.dev without /posts prefix", %{ + conn: conn + } do + conn = conn |> Map.put(:host, "blog.jola.dev") |> Map.put(:request_path, "/non-existent-post") + |> BlogRedirect.call([]) - result_conn = BlogRedirect.call(original_conn, []) - - assert result_conn == original_conn - refute result_conn.halted + assert conn.status == 301 + assert get_resp_header(conn, "location") == ["https://jola.dev/non-existent-post"] + assert conn.halted end test "does not redirect on non-blog.jola.dev hosts", %{conn: conn} do