From: Eric Wong Date: Fri, 4 Sep 2015 08:49:29 +0000 (+0000) Subject: www: extra redirects for the '/'-challenged X-Git-Tag: v1.0.0~909 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=6e509b610078e6758b98d1151ea775f76fd22cbe;p=public-inbox.git 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. --- 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(); }