summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVille Skytt? <ville.skytta@iki.fi>2011-03-13 12:37:00 +0200
committerVille Skytt? <ville.skytta@iki.fi>2011-03-13 12:37:00 +0200
commit6031a4f1b746f45def64088de614fe3c1b5f10e8 (patch)
tree0d6c3ff54dc06598b8269bcd192e7825358fb1de
parent4c83a6af75f8bb94c17dddf2b08dc304bf88a4c9 (diff)
downloadmarkup-validator-6031a4f1b746f45def64088de614fe3c1b5f10e8.zip
markup-validator-6031a4f1b746f45def64088de614fe3c1b5f10e8.tar.gz
markup-validator-6031a4f1b746f45def64088de614fe3c1b5f10e8.tar.bz2
Do uri=referer redirects in httpd.conf if mod_rewrite is available.
-rw-r--r--httpd/conf/httpd.conf15
1 files changed, 13 insertions, 2 deletions
diff --git a/httpd/conf/httpd.conf b/httpd/conf/httpd.conf
index a7b6699..b426c33 100644
--- a/httpd/conf/httpd.conf
+++ b/httpd/conf/httpd.conf
@@ -11,11 +11,22 @@
# To run the validator without mod_perl 2.x even if it is loaded, comment
# out the "IfDefine MODPERL2" sections below.
-# Legacy: support /check/referer by redirecting to check?uri=referer
+# Referer dependent redirects.
<IfModule mod_rewrite.c>
RewriteEngine On
-RewriteRule ^(/+w3c-validator/+check)/+referr?er\b $1?uri=referer [R=301,QSA,L]
+
+# check/referer is deprecated in favor of check?uri=referer
+RewriteRule ^(/+w3c-validator/+check)/+referr?er$ $1?uri=referer [R=301,QSA,L]
+
+# If Referer is present, redirect check?uri=referer to check?uri=$Referer
+RewriteRule . - [E=have_uri_referer:false]
+RewriteCond %{QUERY_STRING} (^|.*?[;&])ur[il]=referer([;&].*|$)
+RewriteRule . - [E=qs1:%1,E=qs2:%2,E=have_uri_referer:true]
+RewriteCond %{ENV:have_uri_referer} =true
+RewriteCond %{HTTP_REFERER} ^(.+)$
+RewriteRule ^/+w3c-validator/+check$ \
+ /w3c-validator/check?%{ENV:qs1}uri=%1%{ENV:qs2} [R,B,NE,L]
</IfModule>
# Tell httpd that check and sendfeedback.pl are CGI scripts.