Skip to content

Instantly share code, notes, and snippets.

@mishal
Created December 4, 2014 16:39
Show Gist options
  • Save mishal/1700e875a845817df238 to your computer and use it in GitHub Desktop.
Save mishal/1700e875a845817df238 to your computer and use it in GitHub Desktop.
Apache2 virtualhost configuration for WC3 validation service running on separate domain
# --------------------------------------------------------------------------
# Installation:
# --------------------------------------------------------------------------
# Disable the default configuration and setup new virtual host
# $ sudo a2disconf w3c-markup-validator
# $ sudo a2ensite validate.2000cubits.lab
# $ sudo service apache2 reload
# --------------------------------------------------------------------------
# Taken from original distribution: w3c-markup-validator.conf
# --------------------------------------------------------------------------
# -*- apache -*-
# Debianized httpd.conf snippet for W3C Markup Validation Service
# Note that this is not a complete server configuration file, but contains
# only the validator-specific part.
#
# The w3c-markup-validator postinst script will link
# /etc/apache2/conf.available/w3c-markup-validator.conf -> /etc/w3c/httpd.conf
#
# To run the validator without mod_perl 2.x even if it is loaded, comment
# out the "IfDefine MODPERL2" sections below.
<VirtualHost *:80>
ServerName validate.2000cubits.lab
# Referer dependent redirects.
<IfModule mod_rewrite.c>
RewriteEngine On
# check/referer is deprecated in favor of check?uri=referer
RewriteRule ^(/+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.
Alias /check /usr/lib/cgi-bin/w3c-markup-validator/check
AliasMatch ^/+feedback(\.html)?$ \
/usr/lib/cgi-bin/w3c-markup-validator/sendfeedback.pl
<IfDefine MODPERL2>
# Note: this block affects the whole server, not just the validator.
PerlSwitches -T
PerlPostConfigRequire /usr/share/w3c-markup-validator/mod_perl/startup.pl
</IfDefine>
<LocationMatch "^/+(check|feedback(\.html)?)$">
Options +ExecCGI
SetHandler cgi-script
<IfDefine MODPERL2>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
</IfDefine>
Require all granted
# Environment settings affecting validator's outside connectivity, see
# LWP::UserAgent and Net::FTP documentation for details.
#SetEnv http_proxy http://proxy:3128
#SetEnv https_proxy http://proxy:3128
#SetEnv ftp_proxy http://proxy:3128
#SetEnv no_proxy localdomain
#SetEnv FTP_PASSIVE 1
</LocationMatch>
# This is the directory where you have the validator's *.html, *.css etc files.
Alias / /usr/share/w3c-markup-validator/html/
<Directory /usr/share/w3c-markup-validator/html/>
Options IncludesNOEXEC Indexes MultiViews
AllowOverride None
AddHandler server-parsed .html
AddCharset utf-8 .html
AddEncoding x-gzip .gz
<Files *.js.gz>
ForceType application/javascript
</Files>
<Files *.css.gz>
ForceType text/css
</Files>
<IfModule mod_rewrite.c>
Options +SymLinksIfOwnerMatch
RewriteBase /
RewriteRule fragment-upload(\.html)? detailed.html#validate-by-input [R,L,NE]
RewriteRule file-upload(\.html)? detailed.html#validate-by-upload [R,L,NE]
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType text/html A604800
ExpiresByType text/css A2592000
ExpiresByType text/javascript A2592000
ExpiresByType application/javascript A2592000
ExpiresByType application/ecmascript A2592000
</IfModule>
# See bug 608225
# Permission may be denied higher up so override here.
Require all granted
# That project doesn't use ap_expr yet: Enable legacy mode:
SSILegacyExprParser on
</Directory>
# Atom news feed
Redirect /whatsnew.atom \
http://www.w3.org/QA/Tools/validator-whatsnew.atom
</VirtualHost>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment