]> Sergey Matveev's repositories - public-inbox.git/commitdiff
www: redirect /f/$MESSAGE_ID.txt links to /m/$MESSAGE_ID.txt
authorEric Wong <e@80x24.org>
Wed, 19 Aug 2015 19:46:22 +0000 (19:46 +0000)
committerEric Wong <e@80x24.org>
Wed, 19 Aug 2015 19:46:22 +0000 (19:46 +0000)
Some people (e.g. myself :p) may try to guess URLs and hit a
404.  Redirect to the /m/ version.

Note: we prefer to redirect to canonical URLs to improve
caching.

lib/PublicInbox/WWW.pm

index be34e1cd544d742de593859ab9b0a7c37ea68a22..8f069642f5cd99d9bd724e45cfcf469f2865c91f 100644 (file)
@@ -58,6 +58,10 @@ sub run {
                my $sp = $2;
                invalid_list(\%ctx, $1) || get_subject_path(\%ctx, $cgi, $sp);
 
+       } elsif ($path_info =~ m!$LISTNAME_RE/f/\S+\.txt\z!o) {
+               invalid_list_mid(\%ctx, $1, $2) ||
+                       redirect_mid_txt(\%ctx, $cgi);
+
        # convenience redirects, order matters
        } elsif ($path_info =~ m!$LISTNAME_RE/(m|f|t|s)/(\S+)\z!o) {
                my $pfx = $2;
@@ -231,6 +235,15 @@ sub redirect_mid {
        do_redirect($url . ".html$anchor");
 }
 
+# only hit when somebody tries to guess URLs manually:
+sub redirect_mid_txt {
+       my ($ctx, $cgi, $pfx) = @_;
+       my $listname = $ctx->{listname};
+       my $url = self_url($cgi);
+       $url =~ s!/$listname/f/(\S+\.txt)\z!/$listname/m/$1!;
+       do_redirect($url);
+}
+
 sub do_redirect {
        my ($url) = @_;
        [ 301,