]> Sergey Matveev's repositories - public-inbox.git/commitdiff
www: extra redirects for the '/'-challenged
authorEric Wong <e@80x24.org>
Fri, 4 Sep 2015 08:49:29 +0000 (08:49 +0000)
committerEric Wong <e@80x24.org>
Fri, 4 Sep 2015 08:49:29 +0000 (08:49 +0000)
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

index e8b35cb2b0bd7aa2e05c89d5dd6b43e0578221f5..5584e49bf6a993e101a941111a5fbf147397121f 100644 (file)
@@ -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();
        }