ui-repolist: return HTTP 404 if no repositories found
Return HTTP status code 404 Not found when querying a non-existent repository, which signals to search engines that a repository no longer exists. Further, some webservers such as nginx permit logging requests to different files depending on the HTTP code. Signed-off-by: Peter Colberg <peter@colberg.org>
This commit is contained in:
parent
a4014d0dbf
commit
9abe4a26a9
@ -115,6 +115,17 @@ static int is_visible(struct cgit_repo *repo)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int any_repos_visible(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < cgit_repolist.count; i++) {
|
||||||
|
if (is_visible(&cgit_repolist.repos[i]))
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void print_sort_header(const char *title, const char *sort)
|
static void print_sort_header(const char *title, const char *sort)
|
||||||
{
|
{
|
||||||
char *currenturl = cgit_currenturl();
|
char *currenturl = cgit_currenturl();
|
||||||
@ -266,6 +277,11 @@ void cgit_print_repolist(void)
|
|||||||
char *section;
|
char *section;
|
||||||
int sorted = 0;
|
int sorted = 0;
|
||||||
|
|
||||||
|
if (!any_repos_visible()) {
|
||||||
|
cgit_print_error_page(404, "Not found", "No repositories found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (ctx.cfg.enable_index_links)
|
if (ctx.cfg.enable_index_links)
|
||||||
++columns;
|
++columns;
|
||||||
if (ctx.cfg.enable_index_owner)
|
if (ctx.cfg.enable_index_owner)
|
||||||
@ -347,9 +363,7 @@ void cgit_print_repolist(void)
|
|||||||
html("</tr>\n");
|
html("</tr>\n");
|
||||||
}
|
}
|
||||||
html("</table>");
|
html("</table>");
|
||||||
if (!hits)
|
if (hits > ctx.cfg.max_repo_count)
|
||||||
cgit_print_error("No repositories found");
|
|
||||||
else if (hits > ctx.cfg.max_repo_count)
|
|
||||||
print_pager(hits, ctx.cfg.max_repo_count, ctx.qry.search, ctx.qry.sort);
|
print_pager(hits, ctx.cfg.max_repo_count, ctx.qry.search, ctx.qry.sort);
|
||||||
cgit_print_docend();
|
cgit_print_docend();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user