From 3405e5f3e7bc0712bdae3f2b4fcff0b67c371ad0 Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Sun, 1 Nov 2026 19:25:02 -1000 Subject: Keep the login page out of search indexes --- source/ui-shared.c | 9 ++++++--- tests/t0505-auth.sh | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/source/ui-shared.c b/source/ui-shared.c index 5e4aec2..cb5e050 100644 --- a/source/ui-shared.c +++ b/source/ui-shared.c @@ -1446,7 +1446,7 @@ static void print_docstart(void) { const struct object_id *pinned; struct string_list_item *item; - const char *desc; + const char *desc, *robots; char *host; if (ctx.cfg.embedded) { @@ -1485,9 +1485,12 @@ static void print_docstart(void) htmlf("\n", cgit_version); else html("\n"); - if (ctx.cfg.robots && *ctx.cfg.robots) { + // The login page answers in place of the page asked for, so it must + // not be indexed as that page. + robots = ctx.env.authenticated ? ctx.cfg.robots : "noindex, nofollow"; + if (robots && *robots) { html("\n"); } diff --git a/tests/t0505-auth.sh b/tests/t0505-auth.sh index f7096ca..e9349d4 100755 --- a/tests/t0505-auth.sh +++ b/tests/t0505-auth.sh @@ -102,4 +102,18 @@ test_expect_success 'the login page keeps the repository to itself' ' ! grep "Mallory" tmp ' +# The login page answers in place of whatever page was asked for, so it is +# kept out of a search index, whatever the site allows for its own pages. +test_expect_success 'the login page asks not to be indexed' ' + cgit_rc denyrc "url=authy/log/" >tmp && + grep "^Status: 200" tmp && + grep "" tmp && + { + echo "robots=" && + cat denyrc + } >norobotsrc && + cgit_rc norobotsrc "url=authy/log/" >tmp && + grep "" tmp +' + test_done -- cgit 2.12.1