From 6e509b610078e6758b98d1151ea775f76fd22cbe Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 4 Sep 2015 08:49:29 +0000 Subject: www: extra redirects for the '/'-challenged Omitting a slash should not be fatal if unambiguous. Add fallbacks so users who expect a directory structure-like experience can have it at the cost of one extra HTTP request/response pair. This matches behavior of static sites. --- lib/PublicInbox/WWW.pm | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lib/PublicInbox/WWW.pm') diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm index e8b35cb2..5584e49b 100644 --- a/lib/PublicInbox/WWW.pm +++ b/lib/PublicInbox/WWW.pm @@ -42,6 +42,10 @@ sub run { } elsif ($path_info =~ m!$LISTNAME_RE/$MID_RE/$END_RE\z!o) { msg_page($ctx, $1, $2, $3); + # in case people leave off the trailing slash: + } elsif ($path_info =~ m!$LISTNAME_RE/$MID_RE/(f|T|t)\z!o) { + r301($ctx, $1, $2, $3 eq 't' ? 't/#u' : $3); + # convenience redirects order matters } elsif ($path_info =~ m!$LISTNAME_RE/([^/]{2,})\z!o) { r301($ctx, $1, $2); @@ -354,6 +358,9 @@ sub legacy_redirects { } elsif ($path_info =~ m!$LISTNAME_RE/(\S+/\S+)/$END_RE\z!o) { msg_page($ctx, $1, $2, $3); + # in case people leave off the trailing slash: + } elsif ($path_info =~ m!$LISTNAME_RE/(\S+/\S+)/(f|T|t)\z!o) { + r301($ctx, $1, $2, $3 eq 't' ? 't/#u' : $3); } else { r404(); } -- cgit v1.2.3-24-ge0c7