]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/CGI.pm
Split apache404 into an independent plugin
[ikiwiki.git] / IkiWiki / CGI.pm
index 949390e681d18a784b6bd6652b6265078b2ffc4f..e75ebcd27652fb6a2a1c6317afd6b9ab99332930 100644 (file)
@@ -239,6 +239,9 @@ sub check_banned ($$) {
                        print $q->header(-status => "403 Forbidden");
                        $session->delete();
                        print gettext("You are banned.");
+                       # Internet Explorer won't show custom 404 responses
+                       # unless they're >= 512 bytes
+                       print " " x 512;
                        cgi_savesession($session);
                        exit;
                }
@@ -318,12 +321,15 @@ sub cgi_goto ($;$) {
        my $link = bestlink("", $page);
 
        if (! length $link) {
-               print "Content-type: text/html\n\n";
+               print $q->header(-status => "404 Not Found");
                print misctemplate(gettext("missing page"),
                        "<p>".
                        sprintf(gettext("The page %s does not exist."),
                                htmllink("", "", $page)).
-                       "</p>");
+                       "</p>".
+                       # Internet Explorer won't show custom 404 responses
+                       # unless they're >= 512 bytes
+                       (" " x 512));
        }
        else {
                redirect($q, urlto($link, undef, 1));
@@ -359,6 +365,8 @@ sub cgi (;$$) {
                }
        }
 
+       # goto is the preferred name for this; recentchanges_link and
+       # commenter are for compatibility with any saved URLs
        if ($do eq 'goto' || $do eq 'recentchanges_link' ||
            $do eq 'commenter') {
                cgi_goto($q);