diff options
author | Eric Wong <e@80x24.org> | 2015-08-27 04:34:02 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2015-08-27 06:04:51 +0000 |
commit | 3ed9085b7445fb3b7f7f5eed107dce63e4bc3bf3 (patch) | |
tree | 49ce865379e341b608237029831798cc4aa6c377 /lib/PublicInbox/WWW.pm | |
parent | 9a2931759c3dcbd879728b49151aa3f8a641b506 (diff) | |
download | public-inbox-3ed9085b7445fb3b7f7f5eed107dce63e4bc3bf3.tar.gz |
We should not break existing URLs. Redirect them to the newer, less-ambiguous URLs to improve cache hit ratios.
Diffstat (limited to 'lib/PublicInbox/WWW.pm')
-rw-r--r-- | lib/PublicInbox/WWW.pm | 37 |
1 files changed, 20 insertions, 17 deletions
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'; # <u id='#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: |