]> Sergey Matveev's repositories - public-inbox.git/commitdiff
cgi: implement suffix-less Message-ID redirects
authorEric Wong <e@80x24.org>
Thu, 17 Apr 2014 21:31:06 +0000 (21:31 +0000)
committerEric Wong <e@80x24.org>
Thu, 17 Apr 2014 21:31:06 +0000 (21:31 +0000)
This may be easier in some cases for copy+paste, but not 100%
reliable in case the .txt and .html suffixes are in the Message-ID
itself.

public-inbox.cgi

index bd592ce3e3107c6ed77ea51f0cf0c761284393e4..31d521334d9f2a8d684bce0840358f01b6375530 100755 (executable)
@@ -78,14 +78,14 @@ sub main {
                invalid_list_mid(\%ctx, $1, $2) || get_mid_txt(\%ctx, $cgi);
        } elsif ($path_info =~ m!$LISTNAME_RE/m/(\S+)\.html\z!o) {
                invalid_list_mid(\%ctx, $1, $2) || get_mid_html(\%ctx, $cgi);
-       } elsif ($path_info =~ m!$LISTNAME_RE/m/(\S+)\z!o) {
-               redirect_mid_html($cgi, $1, $2);
 
        # full-message page
        } elsif ($path_info =~ m!$LISTNAME_RE/f/(\S+)\.html\z!o) {
                invalid_list_mid(\%ctx, $1, $2) || get_full_html(\%ctx, $cgi);
-       } elsif ($path_info =~ m!$LISTNAME_RE/f/(\S+)\z!o) {
-               redirect_mid_html($cgi, $1, $2);
+
+       # convenience redirect
+       } elsif ($path_info =~ m!$LISTNAME_RE/(?:m|f)/(\S+)\z!o) {
+               invalid_list_mid(\%ctx, $1, $2) || redirect_mid(\%ctx, $cgi);
 
        } else {
                r404();
@@ -195,6 +195,13 @@ sub redirect_list_index {
        do_redirect($cgi->self_url . "/");
 }
 
+sub redirect_mid {
+       my ($ctx, $cgi) = @_;
+       my $url = $cgi->self_url;
+       $url =~ s!/f/!/m/!;
+       do_redirect($url . '.html');
+}
+
 sub do_redirect {
        my ($url) = @_;
        [ '301 Moved Permanently',