markup-validator commit: Remove internal support for /check/referer, do it in httpd.conf instead.

changeset:   3213:c2a8c311f2b4
tag:         tip
user:        Ville Skyttä <ville.skytta@iki.fi>
date:        Thu Mar 10 22:48:10 2011 +0200
files:       httpd/cgi-bin/check httpd/conf/httpd.conf
description:
Remove internal support for /check/referer, do it in httpd.conf instead.

/check/referer has been deprecated in favor of /check?uri=referer
since 2003 (validator 0.6.5 beta 1).


diff -r 6595643c8f61 -r c2a8c311f2b4 httpd/cgi-bin/check
--- a/httpd/cgi-bin/check	Thu Mar 10 22:43:57 2011 +0200
+++ b/httpd/cgi-bin/check	Thu Mar 10 22:48:10 2011 +0200
@@ -2795,37 +2795,6 @@
         $q->param($param, TRUE) unless $q->param($param);
     }
 
-    my $path_info = $q->path_info();
-
-    # IIS reportedly does not provide the $path_info we expect - hack around it.
-    $path_info =~ s|(.*)/check\.pl(.*)$|$2|
-        if ($ENV{SERVER_SOFTWARE} and
-        $ENV{SERVER_SOFTWARE} =~ /Microsoft-IIS/);
-
-    # apparently, with mod_perl2, $path_info is empty even if it should be
-    # filled. working around that
-    if (!$path_info && $File->{Env}->{'Self URI'} =~ /check\/referr?er$/) {
-        $path_info = '/referer';
-        $File->{Env}->{'Self URI'} =~ s/\/referr?er$//;
-    }
-
-    # Futz the URL so "/referer" works.
-    if ($path_info) {
-        if ($path_info =~ m|^/referr?er$|) {
-            if ($q->referer) {
-                $q->param('uri', $q->referer);
-                print redirect &self_url_q($q, $File);
-            }
-            else {
-                print redirect $File->{Env}->{'Self URI'} . '?uri=referer';
-            }
-        }
-        else {
-            print redirect &self_url_q($q, $File);
-        }
-        exit;
-    }
-
     $File->{Env}->{'Home Page'} =
         URI->new_abs(".", $File->{Env}->{'Self URI'});
 
@@ -2851,9 +2820,7 @@
         }
         else {
 
-            # Redirected from /check/referer to /check?uri=referer because
-            # the browser didn't send a Referer header, or the request was
-            # for /check?uri=referer but no Referer header was found.
+            # No Referer header was found.
             $File->{'Error Flagged'} = TRUE;
             &get_error_template($File)->param(fatal_referer_error => TRUE);
         }
diff -r 6595643c8f61 -r c2a8c311f2b4 httpd/conf/httpd.conf
--- a/httpd/conf/httpd.conf	Thu Mar 10 22:43:57 2011 +0200
+++ b/httpd/conf/httpd.conf	Thu Mar 10 22:48:10 2011 +0200
@@ -11,10 +11,16 @@
 # To run the validator without mod_perl 2.x even if it is loaded, comment
 # out the "IfDefine MODPERL2" sections below.
 
-# First, tell httpd that check and sendfeedback.pl are CGI scripts.
+# Legacy: support /check/referer by redirecting to check?uri=referer
 
-AliasMatch ^/+w3c-validator/+check(/+referer)?$ \
-           /usr/local/validator/cgi-bin/check
+<IfModule mod_rewrite.c>
+RewriteEngine On
+RewriteRule ^(/+w3c-validator/+check)/+referr?er\b $1?uri=referer [R=301,QSA,L]
+</IfModule>
+
+# Tell httpd that check and sendfeedback.pl are CGI scripts.
+
+Alias /w3c-validator/check /usr/local/validator/cgi-bin/check
 AliasMatch ^/+w3c-validator/+feedback(\.html)?$ \
            /usr/local/validator/cgi-bin/sendfeedback.pl
 
@@ -23,7 +29,7 @@
 PerlSwitches -T
 </IfDefine>
 
-<LocationMatch "^/+w3c-validator/+(check(/+referer)?|feedback(\.html)?)$">
+<LocationMatch "^/+w3c-validator/+(check|feedback(\.html)?)$">
   Options               +ExecCGI
   SetHandler            cgi-script
 <IfDefine MODPERL2>
@@ -58,7 +64,6 @@
 
   <IfModule mod_rewrite.c>
   Options +SymLinksIfOwnerMatch
-  RewriteEngine On
   RewriteBase /w3c-validator/
   RewriteRule fragment-upload(.html)? detailed.html#validate-by-input [R,L,NE]
   RewriteRule file-upload(.html)? detailed.html#validate-by-upload [R,L,NE]

Received on Thursday, 10 March 2011 20:48:21 UTC