} elsif ($path_info =~ m!$LISTNAME_RE\z!o) {
invalid_list(\%ctx, $1) || redirect_list_index(\%ctx, $cgi);
} elsif ($path_info =~ m!$LISTNAME_RE(?:/|/index\.html)?\z!o) {
- invalid_list(\%ctx, $1) || get_index(\%ctx, $cgi, 1);
- } elsif ($path_info =~ m!$LISTNAME_RE/(?:all\.html)?\z!o) {
invalid_list(\%ctx, $1) || get_index(\%ctx, $cgi, 0);
} elsif ($path_info =~ m!$LISTNAME_RE/index\.atom\.xml\z!o) {
invalid_list(\%ctx, $1) || get_atom(\%ctx, $cgi, 1);
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();
];
}
-# /$LISTNAME/?before=$GIT_COMMIT -> HTML only
+# /$LISTNAME/?r=$GIT_COMMIT -> HTML only
sub get_index {
my ($ctx, $cgi, $top) = @_;
require PublicInbox::Feed;
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',