From 3ed9085b7445fb3b7f7f5eed107dce63e4bc3bf3 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 27 Aug 2015 04:34:02 +0000 Subject: implement legacy redirects for old URLs We should not break existing URLs. Redirect them to the newer, less-ambiguous URLs to improve cache hit ratios. --- lib/PublicInbox/WWW.pm | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) (limited to 'lib/PublicInbox/WWW.pm') diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm index ceb34d67..8058f3e1 100644 --- a/lib/PublicInbox/WWW.pm +++ b/lib/PublicInbox/WWW.pm @@ -44,37 +44,39 @@ sub run { invalid_list_mid(\%ctx, $1, $2) || get_mid_html(\%ctx); } elsif ($path_info =~ m!$LISTNAME_RE/m/(\S+)/raw\z!o) { invalid_list_mid(\%ctx, $1, $2) || get_mid_txt(\%ctx); - } elsif ($path_info =~ m!$LISTNAME_RE/m/(\S+)\.txt\z!o) { - invalid_list_mid(\%ctx, $1, $2) || get_mid_txt(\%ctx); - } elsif ($path_info =~ m!$LISTNAME_RE/m/(\S+)\.html\z!o) { - invalid_list_mid(\%ctx, $1, $2) || get_mid_html(\%ctx); # full-message page } elsif ($path_info =~ m!$LISTNAME_RE/f/(\S+)/\z!o) { invalid_list_mid(\%ctx, $1, $2) || get_full_html(\%ctx); - } elsif ($path_info =~ m!$LISTNAME_RE/f/(\S+)\.html\z!o) { - invalid_list_mid(\%ctx, $1, $2) || get_full_html(\%ctx); # thread display } elsif ($path_info =~ m!$LISTNAME_RE/t/(\S+)/\z!o) { invalid_list_mid(\%ctx, $1, $2) || get_thread(\%ctx); - } elsif ($path_info =~ m!$LISTNAME_RE/t/(\S+)\.html\z!o) { - invalid_list_mid(\%ctx, $1, $2) || get_thread(\%ctx); - - } elsif ($path_info =~ m!$LISTNAME_RE/t/(\S+)/mbox(\.gz)?\z!ox || - $path_info =~ m!$LISTNAME_RE/t/(\S+)\.mbox(\.gz)?\z!o) { + } elsif ($path_info =~ m!$LISTNAME_RE/t/(\S+)/mbox(\.gz)?\z!x) { my $sfx = $3; invalid_list_mid(\%ctx, $1, $2) || get_thread_mbox(\%ctx, $sfx); - } elsif ($path_info =~ m!$LISTNAME_RE/f/\S+\.txt\z!o) { - invalid_list_mid(\%ctx, $1, $2) || redirect_mid_txt(\%ctx); + # legacy redirects + } elsif ($path_info =~ m!$LISTNAME_RE/(t|m|f)/(\S+)\.html\z!o) { + my $pfx = $2; + invalid_list_mid(\%ctx, $1, $3) || + redirect_mid(\%ctx, $pfx, qr/\.html\z/, '/'); + } elsif ($path_info =~ m!$LISTNAME_RE/(m|f)/(\S+)\.txt\z!o) { + my $pfx = $2; + invalid_list_mid(\%ctx, $1, $3) || + redirect_mid(\%ctx, $pfx, qr/\.txt\z/, '/raw'); + } elsif ($path_info =~ m!$LISTNAME_RE/t/(\S+)(\.mbox(?:\.gz)?)\z!o) { + my $end = $3; + invalid_list_mid(\%ctx, $1, $2) || + redirect_mid(\%ctx, 't', $end, '/mbox.gz'); # convenience redirects, order matters } elsif ($path_info =~ m!$LISTNAME_RE/(m|f|t|s)/(\S+)\z!o) { my $pfx = $2; - invalid_list_mid(\%ctx, $1, $3) || redirect_mid(\%ctx, $2); + invalid_list_mid(\%ctx, $1, $3) || + redirect_mid(\%ctx, $pfx, qr/\z/, '/'); } else { r404(); @@ -217,13 +219,14 @@ sub redirect_list_index { } sub redirect_mid { - my ($ctx, $pfx) = @_; + my ($ctx, $pfx, $old, $sfx) = @_; my $url = self_url($ctx->{cgi}); my $anchor = ''; - if (lc($pfx) eq 't') { + if (lc($pfx) eq 't' && $sfx eq '/') { $anchor = '#u'; # is used to highlight in View.pm } - do_redirect($url . "/$anchor"); + $url =~ s/$old/$sfx/; + do_redirect($url . $anchor); } # only hit when somebody tries to guess URLs manually: -- cgit v1.2.3-24-ge0c7