diff --git a/tests/apache-conf-files/NEEDED.txt b/tests/apache-conf-files/NEEDED.txt
new file mode 100644
index 000000000..b51956b0c
--- /dev/null
+++ b/tests/apache-conf-files/NEEDED.txt
@@ -0,0 +1,6 @@
+Issues for which some kind of test case should be constructable, but we do not
+currently have one:
+
+https://github.com/letsencrypt/letsencrypt/issues/1213
+https://github.com/letsencrypt/letsencrypt/issues/1602
+
diff --git a/tests/apache-conf-files/failing/drupal-htaccess-1531.conf b/tests/apache-conf-files/failing/drupal-htaccess-1531.conf
new file mode 100644
index 000000000..a1aab7a39
--- /dev/null
+++ b/tests/apache-conf-files/failing/drupal-htaccess-1531.conf
@@ -0,0 +1,149 @@
+#
+# Apache/PHP/Drupal settings:
+#
+
+# Protect files and directories from prying eyes.
+
+ Order allow,deny
+
+
+# Don't show directory listings for URLs which map to a directory.
+Options -Indexes
+
+# Follow symbolic links in this directory.
+Options +FollowSymLinks
+
+# Make Drupal handle any 404 errors.
+ErrorDocument 404 /index.php
+
+# Set the default handler.
+DirectoryIndex index.php index.html index.htm
+
+# Override PHP settings that cannot be changed at runtime. See
+# sites/default/default.settings.php and drupal_environment_initialize() in
+# includes/bootstrap.inc for settings that can be changed at runtime.
+
+# PHP 5, Apache 1 and 2.
+
+ php_flag magic_quotes_gpc off
+ php_flag magic_quotes_sybase off
+ php_flag register_globals off
+ php_flag session.auto_start off
+ php_value mbstring.http_input pass
+ php_value mbstring.http_output pass
+ php_flag mbstring.encoding_translation off
+
+
+# Requires mod_expires to be enabled.
+
+ # Enable expirations.
+ ExpiresActive On
+
+ # Cache all files for 2 weeks after access (A).
+ ExpiresDefault A1209600
+
+
+ # Do not allow PHP scripts to be cached unless they explicitly send cache
+ # headers themselves. Otherwise all scripts would have to overwrite the
+ # headers set by mod_expires if they want another caching behavior. This may
+ # fail if an error occurs early in the bootstrap process, and it may cause
+ # problems if a non-Drupal PHP file is installed in a subdirectory.
+ ExpiresActive Off
+
+
+
+# Various rewrite rules.
+
+ RewriteEngine on
+
+ # Set "protossl" to "s" if we were accessed via https://. This is used later
+ # if you enable "www." stripping or enforcement, in order to ensure that
+ # you don't bounce between http and https.
+ RewriteRule ^ - [E=protossl]
+ RewriteCond %{HTTPS} on
+ RewriteRule ^ - [E=protossl:s]
+
+ # Make sure Authorization HTTP header is available to PHP
+ # even when running as CGI or FastCGI.
+ RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+
+ # Block access to "hidden" directories whose names begin with a period. This
+ # includes directories used by version control systems such as Subversion or
+ # Git to store control files. Files whose names begin with a period, as well
+ # as the control files used by CVS, are protected by the FilesMatch directive
+ # above.
+ #
+ # NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is
+ # not possible to block access to entire directories from .htaccess, because
+ # is not allowed here.
+ #
+ # If you do not have mod_rewrite installed, you should remove these
+ # directories from your webroot or otherwise protect them from being
+ # downloaded.
+ RewriteRule "(^|/)\." - [F]
+
+ # If your site can be accessed both with and without the 'www.' prefix, you
+ # can use one of the following settings to redirect users to your preferred
+ # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
+ #
+ # To redirect all users to access the site WITH the 'www.' prefix,
+ # (http://example.com/... will be redirected to http://www.example.com/...)
+ # uncomment the following:
+ # RewriteCond %{HTTP_HOST} .
+ # RewriteCond %{HTTP_HOST} !^www\. [NC]
+ # RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
+ #
+ # To redirect all users to access the site WITHOUT the 'www.' prefix,
+ # (http://www.example.com/... will be redirected to http://example.com/...)
+ # uncomment the following:
+ # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
+ # RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
+
+ # Modify the RewriteBase if you are using Drupal in a subdirectory or in a
+ # VirtualDocumentRoot and the rewrite rules are not working properly.
+ # For example if your site is at http://example.com/drupal uncomment and
+ # modify the following line:
+ # RewriteBase /drupal
+ #
+ # If your site is running in a VirtualDocumentRoot at http://example.com/,
+ # uncomment the following line:
+ # RewriteBase /
+
+ # Pass all requests not referring directly to files in the filesystem to
+ # index.php. Clean URLs are handled in drupal_environment_initialize().
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteCond %{REQUEST_FILENAME} !-d
+ RewriteCond %{REQUEST_URI} !=/favicon.ico
+ RewriteRule ^ index.php [L]
+
+ # Rules to correctly serve gzip compressed CSS and JS files.
+ # Requires both mod_rewrite and mod_headers to be enabled.
+
+ # Serve gzip compressed CSS files if they exist and the client accepts gzip.
+ RewriteCond %{HTTP:Accept-encoding} gzip
+ RewriteCond %{REQUEST_FILENAME}\.gz -s
+ RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
+
+ # Serve gzip compressed JS files if they exist and the client accepts gzip.
+ RewriteCond %{HTTP:Accept-encoding} gzip
+ RewriteCond %{REQUEST_FILENAME}\.gz -s
+ RewriteRule ^(.*)\.js $1\.js\.gz [QSA]
+
+ # Serve correct content types, and prevent mod_deflate double gzip.
+ RewriteRule .css.gz$ - [T=text/css,E=no-gzip:1]
+ RewriteRule .js.gz$ - [T=text/javascript,E=no-gzip:1]
+
+
+ # Serve correct encoding type.
+ Header set Content-Encoding gzip
+ # Force proxies to cache gzipped & non-gzipped css/js files separately.
+ Header append Vary Accept-Encoding
+
+
+
+
+# Add headers to all responses.
+
+ # Disable content sniffing, since it's an attack vector.
+ Header always set X-Content-Type-Options nosniff
+
diff --git a/tests/apache-conf-files/failing/ipv6-1143.conf b/tests/apache-conf-files/failing/ipv6-1143.conf
new file mode 100644
index 000000000..ab4ed412e
--- /dev/null
+++ b/tests/apache-conf-files/failing/ipv6-1143.conf
@@ -0,0 +1,9 @@
+
+DocumentRoot /xxxx/
+ServerName noodles.net.nz
+ServerAlias www.noodles.net.nz
+CustomLog ${APACHE_LOG_DIR}/domlogs/noodles.log combined
+
+ AllowOverride All
+
+
diff --git a/tests/apache-conf-files/failing/ipv6-1143b.conf b/tests/apache-conf-files/failing/ipv6-1143b.conf
new file mode 100644
index 000000000..25655a07c
--- /dev/null
+++ b/tests/apache-conf-files/failing/ipv6-1143b.conf
@@ -0,0 +1,21 @@
+
+
+DocumentRoot /xxxx/
+ServerName noodles.net.nz
+ServerAlias www.noodles.net.nz
+CustomLog ${APACHE_LOG_DIR}/domlogs/noodles.log combined
+
+ AllowOverride All
+
+
+ SSLEngine on
+
+ SSLHonorCipherOrder On
+ SSLProtocol all -SSLv2 -SSLv3
+ SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH +aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
+
+ SSLCertificateFile /xxxx/noodles.net.nz.crt
+ SSLCertificateKeyFile /xxxx/noodles.net.nz.key
+
+ Header set Strict-Transport-Security "max-age=31536000; preload"
+
diff --git a/tests/apache-conf-files/failing/multivhost-1093.conf b/tests/apache-conf-files/failing/multivhost-1093.conf
new file mode 100644
index 000000000..444f0dade
--- /dev/null
+++ b/tests/apache-conf-files/failing/multivhost-1093.conf
@@ -0,0 +1,295 @@
+
+ AllowOverride None
+ Require all denied
+
+
+
+ DocumentRoot /var/www/sjau.ch/web
+
+ ServerName sjau.ch
+ ServerAlias www.sjau.ch
+ ServerAdmin webmaster@sjau.ch
+
+ ErrorLog /var/log/ispconfig/httpd/sjau.ch/error.log
+
+ Alias /error/ "/var/www/sjau.ch/web/error/"
+ ErrorDocument 400 /error/400.html
+ ErrorDocument 401 /error/401.html
+ ErrorDocument 403 /error/403.html
+ ErrorDocument 404 /error/404.html
+ ErrorDocument 405 /error/405.html
+ ErrorDocument 500 /error/500.html
+ ErrorDocument 502 /error/502.html
+ ErrorDocument 503 /error/503.html
+
+
+
+
+
+ # Clear PHP settings of this website
+
+ SetHandler None
+
+ Options +FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+
+ # Clear PHP settings of this website
+
+ SetHandler None
+
+ Options +FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+
+
+
+ Options +ExecCGI
+
+ RubyRequire apache/ruby-run
+ #RubySafeLevel 0
+ AddType text/html .rb
+ AddType text/html .rbx
+
+ SetHandler ruby-object
+ RubyHandler Apache::RubyRun.instance
+
+
+ SetHandler ruby-object
+ RubyHandler Apache::RubyRun.instance
+
+
+
+
+
+
+
+ SetHandler mod_python
+
+ PythonHandler mod_python.publisher
+ PythonDebug On
+
+
+
+ # cgi enabled
+
+ Require all granted
+
+ ScriptAlias /cgi-bin/ /var/www/clients/client1/web2/cgi-bin/
+
+ SetHandler cgi-script
+
+ # suexec enabled
+
+ SuexecUserGroup web2 client1
+
+ # php as fast-cgi enabled
+ # For config options see: http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
+
+ IdleTimeout 300
+ ProcessLifeTime 3600
+ # MaxProcessCount 1000
+ DefaultMinClassProcessCount 0
+ DefaultMaxClassProcessCount 100
+ IPCConnectTimeout 3
+ IPCCommTimeout 600
+ BusyTimeout 3600
+
+
+
+ SetHandler fcgid-script
+
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php3
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php4
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php5
+ Options +ExecCGI
+ AllowOverride All
+ Require all granted
+
+
+
+ SetHandler fcgid-script
+
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php3
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php4
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php5
+ Options +ExecCGI
+ AllowOverride All
+ Require all granted
+
+
+
+ # add support for apache mpm_itk
+
+ AssignUserId web2 client1
+
+
+
+ # Do not execute PHP files in webdav directory
+
+
+ SecRuleRemoveById 960015
+ SecRuleRemoveById 960032
+
+
+ SetHandler None
+
+
+ DavLockDB /var/www/clients/client1/web2/tmp/DavLock
+ # DO NOT REMOVE THE COMMENTS!
+ # IF YOU REMOVE THEM, WEBDAV WILL NOT WORK ANYMORE!
+ # WEBDAV BEGIN
+ # WEBDAV END
+
+
+
+
+
+ DocumentRoot /var/www/sjau.ch/web
+
+ ServerName sjau.ch
+ ServerAlias www.sjau.ch
+ ServerAdmin webmaster@sjau.ch
+
+ ErrorLog /var/log/ispconfig/httpd/sjau.ch/error.log
+
+ Alias /error/ "/var/www/sjau.ch/web/error/"
+ ErrorDocument 400 /error/400.html
+ ErrorDocument 401 /error/401.html
+ ErrorDocument 403 /error/403.html
+ ErrorDocument 404 /error/404.html
+ ErrorDocument 405 /error/405.html
+ ErrorDocument 500 /error/500.html
+ ErrorDocument 502 /error/502.html
+ ErrorDocument 503 /error/503.html
+
+
+
+
+
+ # Clear PHP settings of this website
+
+ SetHandler None
+
+ Options +FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+
+ # Clear PHP settings of this website
+
+ SetHandler None
+
+ Options +FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+
+
+
+ Options +ExecCGI
+
+ RubyRequire apache/ruby-run
+ #RubySafeLevel 0
+ AddType text/html .rb
+ AddType text/html .rbx
+
+ SetHandler ruby-object
+ RubyHandler Apache::RubyRun.instance
+
+
+ SetHandler ruby-object
+ RubyHandler Apache::RubyRun.instance
+
+
+
+
+
+
+
+ SetHandler mod_python
+
+ PythonHandler mod_python.publisher
+ PythonDebug On
+
+
+
+ # cgi enabled
+
+ Require all granted
+
+ ScriptAlias /cgi-bin/ /var/www/clients/client1/web2/cgi-bin/
+
+ SetHandler cgi-script
+
+ # suexec enabled
+
+ SuexecUserGroup web2 client1
+
+ # php as fast-cgi enabled
+ # For config options see: http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
+
+ IdleTimeout 300
+ ProcessLifeTime 3600
+ # MaxProcessCount 1000
+ DefaultMinClassProcessCount 0
+ DefaultMaxClassProcessCount 100
+ IPCConnectTimeout 3
+ IPCCommTimeout 600
+ BusyTimeout 3600
+
+
+
+ SetHandler fcgid-script
+
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php3
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php4
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php5
+ Options +ExecCGI
+ AllowOverride All
+ Require all granted
+
+
+
+ SetHandler fcgid-script
+
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php3
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php4
+ FCGIWrapper /var/www/php-fcgi-scripts/web2/.php-fcgi-starter .php5
+ Options +ExecCGI
+ AllowOverride All
+ Require all granted
+
+
+
+ # add support for apache mpm_itk
+
+ AssignUserId web2 client1
+
+
+
+ # Do not execute PHP files in webdav directory
+
+
+ SecRuleRemoveById 960015
+ SecRuleRemoveById 960032
+
+
+ SetHandler None
+
+
+ DavLockDB /var/www/clients/client1/web2/tmp/DavLock
+ # DO NOT REMOVE THE COMMENTS!
+ # IF YOU REMOVE THEM, WEBDAV WILL NOT WORK ANYMORE!
+ # WEBDAV BEGIN
+ # WEBDAV END
+
+
+
+
diff --git a/tests/apache-conf-files/failing/multivhost-1093b.conf b/tests/apache-conf-files/failing/multivhost-1093b.conf
new file mode 100644
index 000000000..0388abc2c
--- /dev/null
+++ b/tests/apache-conf-files/failing/multivhost-1093b.conf
@@ -0,0 +1,593 @@
+
+ AllowOverride None
+ Require all denied
+
+
+
+ DocumentRoot /var/www/ensemen.ch/web
+
+ ServerName ensemen.ch
+ ServerAlias www.ensemen.ch
+ ServerAdmin webmaster@ensemen.ch
+
+ ErrorLog /var/log/ispconfig/httpd/ensemen.ch/error.log
+
+ Alias /error/ "/var/www/ensemen.ch/web/error/"
+ ErrorDocument 400 /error/400.html
+ ErrorDocument 401 /error/401.html
+ ErrorDocument 403 /error/403.html
+ ErrorDocument 404 /error/404.html
+ ErrorDocument 405 /error/405.html
+ ErrorDocument 500 /error/500.html
+ ErrorDocument 502 /error/502.html
+ ErrorDocument 503 /error/503.html
+
+
+
+
+
+ # Clear PHP settings of this website
+
+ SetHandler None
+
+ Options +FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+
+ # Clear PHP settings of this website
+
+ SetHandler None
+
+ Options +FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+
+
+
+ Options +ExecCGI
+
+ RubyRequire apache/ruby-run
+ #RubySafeLevel 0
+ AddType text/html .rb
+ AddType text/html .rbx
+
+ SetHandler ruby-object
+ RubyHandler Apache::RubyRun.instance
+
+
+ SetHandler ruby-object
+ RubyHandler Apache::RubyRun.instance
+
+
+
+
+
+
+
+ SetHandler mod_python
+
+ PythonHandler mod_python.publisher
+ PythonDebug On
+
+
+
+ # cgi enabled
+
+ Require all granted
+
+ ScriptAlias /cgi-bin/ /var/www/clients/client4/web17/cgi-bin/
+
+ SetHandler cgi-script
+
+ # suexec enabled
+
+ SuexecUserGroup web17 client4
+
+ # php as fast-cgi enabled
+ # For config options see: http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
+
+ IdleTimeout 300
+ ProcessLifeTime 3600
+ # MaxProcessCount 1000
+ DefaultMinClassProcessCount 0
+ DefaultMaxClassProcessCount 100
+ IPCConnectTimeout 3
+ IPCCommTimeout 600
+ BusyTimeout 3600
+
+
+
+ SetHandler fcgid-script
+
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php3
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php4
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php5
+ Options +ExecCGI
+ AllowOverride All
+ Require all granted
+
+
+
+ SetHandler fcgid-script
+
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php3
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php4
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php5
+ Options +ExecCGI
+ AllowOverride All
+ Require all granted
+
+
+
+ # add support for apache mpm_itk
+
+ AssignUserId web17 client4
+
+
+
+ # Do not execute PHP files in webdav directory
+
+
+ SecRuleRemoveById 960015
+ SecRuleRemoveById 960032
+
+
+ SetHandler None
+
+
+ DavLockDB /var/www/clients/client4/web17/tmp/DavLock
+ # DO NOT REMOVE THE COMMENTS!
+ # IF YOU REMOVE THEM, WEBDAV WILL NOT WORK ANYMORE!
+ # WEBDAV BEGIN
+ # WEBDAV END
+
+
+
+
+
+ DocumentRoot /var/www/ensemen.ch/web
+
+ ServerName ensemen.ch
+ ServerAlias www.ensemen.ch
+ ServerAdmin webmaster@ensemen.ch
+
+ ErrorLog /var/log/ispconfig/httpd/ensemen.ch/error.log
+
+ Alias /error/ "/var/www/ensemen.ch/web/error/"
+ ErrorDocument 400 /error/400.html
+ ErrorDocument 401 /error/401.html
+ ErrorDocument 403 /error/403.html
+ ErrorDocument 404 /error/404.html
+ ErrorDocument 405 /error/405.html
+ ErrorDocument 500 /error/500.html
+ ErrorDocument 502 /error/502.html
+ ErrorDocument 503 /error/503.html
+
+
+ SSLEngine on
+ SSLProtocol All -SSLv2 -SSLv3
+ SSLCertificateFile /var/www/clients/client4/web17/ssl/ensemen.ch.crt
+ SSLCertificateKeyFile /var/www/clients/client4/web17/ssl/ensemen.ch.key
+
+
+
+ # Clear PHP settings of this website
+
+ SetHandler None
+
+ Options +FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+
+ # Clear PHP settings of this website
+
+ SetHandler None
+
+ Options +FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+
+
+
+ Options +ExecCGI
+
+ RubyRequire apache/ruby-run
+ #RubySafeLevel 0
+ AddType text/html .rb
+ AddType text/html .rbx
+
+ SetHandler ruby-object
+ RubyHandler Apache::RubyRun.instance
+
+
+ SetHandler ruby-object
+ RubyHandler Apache::RubyRun.instance
+
+
+
+
+
+
+
+ SetHandler mod_python
+
+ PythonHandler mod_python.publisher
+ PythonDebug On
+
+
+
+ # cgi enabled
+
+ Require all granted
+
+ ScriptAlias /cgi-bin/ /var/www/clients/client4/web17/cgi-bin/
+
+ SetHandler cgi-script
+
+ # suexec enabled
+
+ SuexecUserGroup web17 client4
+
+ # php as fast-cgi enabled
+ # For config options see: http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
+
+ IdleTimeout 300
+ ProcessLifeTime 3600
+ # MaxProcessCount 1000
+ DefaultMinClassProcessCount 0
+ DefaultMaxClassProcessCount 100
+ IPCConnectTimeout 3
+ IPCCommTimeout 600
+ BusyTimeout 3600
+
+
+
+ SetHandler fcgid-script
+
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php3
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php4
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php5
+ Options +ExecCGI
+ AllowOverride All
+ Require all granted
+
+
+
+ SetHandler fcgid-script
+
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php3
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php4
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php5
+ Options +ExecCGI
+ AllowOverride All
+ Require all granted
+
+
+
+ # add support for apache mpm_itk
+
+ AssignUserId web17 client4
+
+
+
+ # Do not execute PHP files in webdav directory
+
+
+ SecRuleRemoveById 960015
+ SecRuleRemoveById 960032
+
+
+ SetHandler None
+
+
+ DavLockDB /var/www/clients/client4/web17/tmp/DavLock
+ # DO NOT REMOVE THE COMMENTS!
+ # IF YOU REMOVE THEM, WEBDAV WILL NOT WORK ANYMORE!
+ # WEBDAV BEGIN
+ # WEBDAV END
+
+
+
+
+
+ DocumentRoot /var/www/ensemen.ch/web
+
+ ServerName ensemen.ch
+ ServerAlias www.ensemen.ch
+ ServerAdmin webmaster@ensemen.ch
+
+ ErrorLog /var/log/ispconfig/httpd/ensemen.ch/error.log
+
+ Alias /error/ "/var/www/ensemen.ch/web/error/"
+ ErrorDocument 400 /error/400.html
+ ErrorDocument 401 /error/401.html
+ ErrorDocument 403 /error/403.html
+ ErrorDocument 404 /error/404.html
+ ErrorDocument 405 /error/405.html
+ ErrorDocument 500 /error/500.html
+ ErrorDocument 502 /error/502.html
+ ErrorDocument 503 /error/503.html
+
+
+
+
+
+ # Clear PHP settings of this website
+
+ SetHandler None
+
+ Options +FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+
+ # Clear PHP settings of this website
+
+ SetHandler None
+
+ Options +FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+
+
+
+ Options +ExecCGI
+
+ RubyRequire apache/ruby-run
+ #RubySafeLevel 0
+ AddType text/html .rb
+ AddType text/html .rbx
+
+ SetHandler ruby-object
+ RubyHandler Apache::RubyRun.instance
+
+
+ SetHandler ruby-object
+ RubyHandler Apache::RubyRun.instance
+
+
+
+
+
+
+
+ SetHandler mod_python
+
+ PythonHandler mod_python.publisher
+ PythonDebug On
+
+
+
+ # cgi enabled
+
+ Require all granted
+
+ ScriptAlias /cgi-bin/ /var/www/clients/client4/web17/cgi-bin/
+
+ SetHandler cgi-script
+
+ # suexec enabled
+
+ SuexecUserGroup web17 client4
+
+ # php as fast-cgi enabled
+ # For config options see: http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
+
+ IdleTimeout 300
+ ProcessLifeTime 3600
+ # MaxProcessCount 1000
+ DefaultMinClassProcessCount 0
+ DefaultMaxClassProcessCount 100
+ IPCConnectTimeout 3
+ IPCCommTimeout 600
+ BusyTimeout 3600
+
+
+
+ SetHandler fcgid-script
+
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php3
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php4
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php5
+ Options +ExecCGI
+ AllowOverride All
+ Require all granted
+
+
+
+ SetHandler fcgid-script
+
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php3
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php4
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php5
+ Options +ExecCGI
+ AllowOverride All
+ Require all granted
+
+
+
+ # add support for apache mpm_itk
+
+ AssignUserId web17 client4
+
+
+
+ # Do not execute PHP files in webdav directory
+
+
+ SecRuleRemoveById 960015
+ SecRuleRemoveById 960032
+
+
+ SetHandler None
+
+
+ DavLockDB /var/www/clients/client4/web17/tmp/DavLock
+ # DO NOT REMOVE THE COMMENTS!
+ # IF YOU REMOVE THEM, WEBDAV WILL NOT WORK ANYMORE!
+ # WEBDAV BEGIN
+ # WEBDAV END
+
+
+
+
+
+ DocumentRoot /var/www/ensemen.ch/web
+
+ ServerName ensemen.ch
+ ServerAlias www.ensemen.ch
+ ServerAdmin webmaster@ensemen.ch
+
+ ErrorLog /var/log/ispconfig/httpd/ensemen.ch/error.log
+
+ Alias /error/ "/var/www/ensemen.ch/web/error/"
+ ErrorDocument 400 /error/400.html
+ ErrorDocument 401 /error/401.html
+ ErrorDocument 403 /error/403.html
+ ErrorDocument 404 /error/404.html
+ ErrorDocument 405 /error/405.html
+ ErrorDocument 500 /error/500.html
+ ErrorDocument 502 /error/502.html
+ ErrorDocument 503 /error/503.html
+
+
+ SSLEngine on
+ SSLProtocol All -SSLv2 -SSLv3
+ SSLCertificateFile /var/www/clients/client4/web17/ssl/ensemen.ch.crt
+ SSLCertificateKeyFile /var/www/clients/client4/web17/ssl/ensemen.ch.key
+
+
+
+ # Clear PHP settings of this website
+
+ SetHandler None
+
+ Options +FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+
+ # Clear PHP settings of this website
+
+ SetHandler None
+
+ Options +FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+
+
+
+ Options +ExecCGI
+
+ RubyRequire apache/ruby-run
+ #RubySafeLevel 0
+ AddType text/html .rb
+ AddType text/html .rbx
+
+ SetHandler ruby-object
+ RubyHandler Apache::RubyRun.instance
+
+
+ SetHandler ruby-object
+ RubyHandler Apache::RubyRun.instance
+
+
+
+
+
+
+
+ SetHandler mod_python
+
+ PythonHandler mod_python.publisher
+ PythonDebug On
+
+
+
+ # cgi enabled
+
+ Require all granted
+
+ ScriptAlias /cgi-bin/ /var/www/clients/client4/web17/cgi-bin/
+
+ SetHandler cgi-script
+
+ # suexec enabled
+
+ SuexecUserGroup web17 client4
+
+ # php as fast-cgi enabled
+ # For config options see: http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
+
+ IdleTimeout 300
+ ProcessLifeTime 3600
+ # MaxProcessCount 1000
+ DefaultMinClassProcessCount 0
+ DefaultMaxClassProcessCount 100
+ IPCConnectTimeout 3
+ IPCCommTimeout 600
+ BusyTimeout 3600
+
+
+
+ SetHandler fcgid-script
+
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php3
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php4
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php5
+ Options +ExecCGI
+ AllowOverride All
+ Require all granted
+
+
+
+ SetHandler fcgid-script
+
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php3
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php4
+ FCGIWrapper /var/www/php-fcgi-scripts/web17/.php-fcgi-starter .php5
+ Options +ExecCGI
+ AllowOverride All
+ Require all granted
+
+
+
+ # add support for apache mpm_itk
+
+ AssignUserId web17 client4
+
+
+
+ # Do not execute PHP files in webdav directory
+
+
+ SecRuleRemoveById 960015
+ SecRuleRemoveById 960032
+
+
+ SetHandler None
+
+
+ DavLockDB /var/www/clients/client4/web17/tmp/DavLock
+ # DO NOT REMOVE THE COMMENTS!
+ # IF YOU REMOVE THEM, WEBDAV WILL NOT WORK ANYMORE!
+ # WEBDAV BEGIN
+ # WEBDAV END
+
+
+
+
diff --git a/tests/apache-conf-files/passing/README.modules b/tests/apache-conf-files/passing/README.modules
new file mode 100644
index 000000000..9c5853061
--- /dev/null
+++ b/tests/apache-conf-files/passing/README.modules
@@ -0,0 +1,5 @@
+Modules required to parse these conf files:
+
+ssl
+rewrite
+macro
diff --git a/tests/apache-conf-files/passing/anarcat-1531.conf b/tests/apache-conf-files/passing/anarcat-1531.conf
new file mode 100644
index 000000000..73a9b746c
--- /dev/null
+++ b/tests/apache-conf-files/passing/anarcat-1531.conf
@@ -0,0 +1,14 @@
+
+ ServerAdmin root@localhost
+ ServerName anarcat.wiki.orangeseeds.org:80
+
+
+ UserDir disabled
+
+ RewriteEngine On
+ RewriteRule ^/(.*) http\:\/\/anarc\.at\/$1 [L,R,NE]
+
+ ErrorLog /var/log/apache2/1531error.log
+ LogLevel warn
+ CustomLog /var/log/apache2/1531access.log combined
+
diff --git a/tests/apache-conf-files/passing/finalize-1243.apache2.conf.txt b/tests/apache-conf-files/passing/finalize-1243.apache2.conf.txt
new file mode 100644
index 000000000..73dc64223
--- /dev/null
+++ b/tests/apache-conf-files/passing/finalize-1243.apache2.conf.txt
@@ -0,0 +1,222 @@
+# This is the main Apache server configuration file. It contains the
+# configuration directives that give the server its instructions.
+# See http://httpd.apache.org/docs/2.4/ for detailed information about
+# the directives and /usr/share/doc/apache2/README.Debian about Debian specific
+# hints.
+#
+#
+# Summary of how the Apache 2 configuration works in Debian:
+# The Apache 2 web server configuration in Debian is quite different to
+# upstream's suggested way to configure the web server. This is because Debian's
+# default Apache2 installation attempts to make adding and removing modules,
+# virtual hosts, and extra configuration directives as flexible as possible, in
+# order to make automating the changes and administering the server as easy as
+# possible.
+
+# It is split into several files forming the configuration hierarchy outlined
+# below, all located in the /etc/apache2/ directory:
+#
+# /etc/apache2/
+# |-- apache2.conf
+# | `-- ports.conf
+# |-- mods-enabled
+# | |-- *.load
+# | `-- *.conf
+# |-- conf-enabled
+# | `-- *.conf
+# `-- sites-enabled
+# `-- *.conf
+#
+#
+# * apache2.conf is the main configuration file (this file). It puts the pieces
+# together by including all remaining configuration files when starting up the
+# web server.
+#
+# * ports.conf is always included from the main configuration file. It is
+# supposed to determine listening ports for incoming connections which can be
+# customized anytime.
+#
+# * Configuration files in the mods-enabled/, conf-enabled/ and sites-enabled/
+# directories contain particular configuration snippets which manage modules,
+# global configuration fragments, or virtual host configurations,
+# respectively.
+#
+# They are activated by symlinking available configuration files from their
+# respective *-available/ counterparts. These should be managed by using our
+# helpers a2enmod/a2dismod, a2ensite/a2dissite and a2enconf/a2disconf. See
+# their respective man pages for detailed information.
+#
+# * The binary is called apache2. Due to the use of environment variables, in
+# the default configuration, apache2 needs to be started/stopped with
+# /etc/init.d/apache2 or apache2ctl. Calling /usr/bin/apache2 directly will not
+# work with the default configuration.
+
+
+# Global configuration
+#
+
+#
+# ServerRoot: The top of the directory tree under which the server's
+# configuration, error, and log files are kept.
+#
+# NOTE! If you intend to place this on an NFS (or otherwise network)
+# mounted filesystem then please read the Mutex documentation (available
+# at );
+# you will save yourself a lot of trouble.
+#
+# Do NOT add a slash at the end of the directory path.
+#
+#ServerRoot "/etc/apache2"
+
+#
+# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
+#
+Mutex file:${APACHE_LOCK_DIR} default
+
+#
+# PidFile: The file in which the server should record its process
+# identification number when it starts.
+# This needs to be set in /etc/apache2/envvars
+#
+PidFile ${APACHE_PID_FILE}
+
+#
+# Timeout: The number of seconds before receives and sends time out.
+#
+Timeout 300
+
+#
+# KeepAlive: Whether or not to allow persistent connections (more than
+# one request per connection). Set to "Off" to deactivate.
+#
+KeepAlive On
+
+#
+# MaxKeepAliveRequests: The maximum number of requests to allow
+# during a persistent connection. Set to 0 to allow an unlimited amount.
+# We recommend you leave this number high, for maximum performance.
+#
+MaxKeepAliveRequests 100
+
+#
+# KeepAliveTimeout: Number of seconds to wait for the next request from the
+# same client on the same connection.
+#
+KeepAliveTimeout 5
+
+
+# These need to be set in /etc/apache2/envvars
+User ${APACHE_RUN_USER}
+Group ${APACHE_RUN_GROUP}
+
+#
+# HostnameLookups: Log the names of clients or just their IP addresses
+# e.g., www.apache.org (on) or 204.62.129.132 (off).
+# The default is off because it'd be overall better for the net if people
+# had to knowingly turn this feature on, since enabling it means that
+# each client request will result in AT LEAST one lookup request to the
+# nameserver.
+#
+HostnameLookups Off
+
+# ErrorLog: The location of the error log file.
+# If you do not specify an ErrorLog directive within a
+# container, error messages relating to that virtual host will be
+# logged here. If you *do* define an error logfile for a
+# container, that host's errors will be logged there and not here.
+#
+ErrorLog ${APACHE_LOG_DIR}/error.log
+
+#
+# LogLevel: Control the severity of messages logged to the error_log.
+# Available values: trace8, ..., trace1, debug, info, notice, warn,
+# error, crit, alert, emerg.
+# It is also possible to configure the log level for particular modules, e.g.
+# "LogLevel info ssl:warn"
+#
+LogLevel warn
+
+# Include module configuration:
+IncludeOptional mods-enabled/*.load
+IncludeOptional mods-enabled/*.conf
+
+# Include list of ports to listen on
+Include ports.conf
+
+
+# Sets the default security model of the Apache2 HTTPD server. It does
+# not allow access to the root filesystem outside of /usr/share and /var/www.
+# The former is used by web applications packaged in Debian,
+# the latter may be used for local directories served by the web server. If
+# your system is serving content from a sub-directory in /srv you must allow
+# access here, or in any related virtual host.
+
+ Options FollowSymLinks
+ AllowOverride None
+ Require all denied
+
+
+
+ AllowOverride None
+ Require all granted
+
+
+
+ Options Indexes FollowSymLinks
+ AllowOverride None
+ Require all granted
+
+
+#
+# Options Indexes FollowSymLinks
+# AllowOverride None
+# Require all granted
+#
+
+# AccessFileName: The name of the file to look for in each directory
+# for additional configuration directives. See also the AllowOverride
+# directive.
+#
+AccessFileName .htaccess
+
+#
+# The following lines prevent .htaccess and .htpasswd files from being
+# viewed by Web clients.
+#
+
+ Require all denied
+
+
+
+#
+# The following directives define some format nicknames for use with
+# a CustomLog directive.
+#
+# These deviate from the Common Log Format definitions in that they use %O
+# (the actual bytes sent including headers) instead of %b (the size of the
+# requested file), because the latter makes it impossible to detect partial
+# requests.
+#
+# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended.
+# Use mod_remoteip instead.
+#
+#LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
+LogFormat "%t \"%r\" %>s %O \"%{User-Agent}i\"" vhost_combined
+
+#LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
+#LogFormat "%h %l %u %t \"%r\" %>s %O" common
+LogFormat "- %t \"%r\" %>s %b" noip
+
+LogFormat "%{Referer}i -> %U" referer
+LogFormat "%{User-agent}i" agent
+
+# Include of directories ignores editors' and dpkg's backup files,
+# see README.Debian for details.
+
+# Include generic snippets of statements
+IncludeOptional conf-enabled/*.conf
+
+# Include the virtual host configurations:
+#IncludeOptional sites-enabled/*.conf
+
+# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
diff --git a/tests/apache-conf-files/passing/finalize-1243.conf b/tests/apache-conf-files/passing/finalize-1243.conf
new file mode 100644
index 000000000..0918e5669
--- /dev/null
+++ b/tests/apache-conf-files/passing/finalize-1243.conf
@@ -0,0 +1,67 @@
+#LoadModule ssl_module modules/mod_ssl.so
+
+Listen 443
+
+ # The ServerName directive sets the request scheme, hostname and port that
+ # the server uses to identify itself. This is used when creating
+ # redirection URLs. In the context of virtual hosts, the ServerName
+ # specifies what hostname must appear in the request's Host: header to
+ # match this virtual host. For the default virtual host (this file) this
+ # value is not decisive as it is used as a last resort host regardless.
+ # However, you must set it for any further virtual host explicitly.
+ ServerName www.eiserneketten.de
+
+ SSLEngine on
+ ServerAdmin webmaster@localhost
+ DocumentRoot /var/www/html
+
+ # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
+ # error, crit, alert, emerg.
+ # It is also possible to configure the loglevel for particular
+ # modules, e.g.
+ #LogLevel info ssl:warn
+
+ ErrorLog ${APACHE_LOG_DIR}/error.log
+ CustomLog ${APACHE_LOG_DIR}/access.log noip
+
+ # For most configuration files from conf-available/, which are
+ # enabled or disabled at a global level, it is possible to
+ # include a line for only one particular virtual host. For example the
+ # following line enables the CGI configuration for this host only
+ # after it has been globally disabled with "a2disconf".
+ #Include conf-available/serve-cgi-bin.conf
+
+ Options FollowSymLinks
+ AllowOverride None
+ Order Deny,Allow
+ #Deny from All
+
+
+ Alias / /eiserneketten/pages/eiserneketten.html
+SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
+SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
+SSLCertificateChainFile /etc/ssl/certs/ssl-cert-snakeoil.pem
+Include /etc/letsencrypt/options-ssl-apache.conf
+
+
+
+# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
+
+#
+# Directives to allow use of AWStats as a CGI
+#
+Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
+Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
+Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"
+ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"
+
+#
+# This is to permit URL access to scripts/files in AWStats directory.
+#
+
+ Options None
+ AllowOverride None
+ Order allow,deny
+ Allow from all
+
+
diff --git a/tests/apache-conf-files/passing/modmacro-1385.conf b/tests/apache-conf-files/passing/modmacro-1385.conf
new file mode 100644
index 000000000..d327c9421
--- /dev/null
+++ b/tests/apache-conf-files/passing/modmacro-1385.conf
@@ -0,0 +1,33 @@
+
+
+ # The ServerName directive sets the request scheme, hostname and port that
+ # the server uses to identify itself. This is used when creating
+ # redirection URLs. In the context of virtual hosts, the ServerName
+ # specifies what hostname must appear in the request's Host: header to
+ # match this virtual host. For the default virtual host (this file) this
+ # value is not decisive as it is used as a last resort host regardless.
+ # However, you must set it for any further virtual host explicitly.
+ ServerName $host
+
+ ServerAdmin webmaster@localhost
+ DocumentRoot $dir
+
+ # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
+ # error, crit, alert, emerg.
+ # It is also possible to configure the loglevel for particular
+ # modules, e.g.
+ #LogLevel info ssl:warn
+
+ ErrorLog ${APACHE_LOG_DIR}/error.log
+ CustomLog ${APACHE_LOG_DIR}/access.log combined
+
+ # For most configuration files from conf-available/, which are
+ # enabled or disabled at a global level, it is possible to
+ # include a line for only one particular virtual host. For example the
+ # following line enables the CGI configuration for this host only
+ # after it has been globally disabled with "a2disconf".
+ #Include conf-available/serve-cgi-bin.conf
+
+
+Use Vhost goxogle.com 80 /var/www/goxogle/
+# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
diff --git a/tests/apache-conf-files/passing/owncloud-1264.conf b/tests/apache-conf-files/passing/owncloud-1264.conf
new file mode 100644
index 000000000..d0ac81fa3
--- /dev/null
+++ b/tests/apache-conf-files/passing/owncloud-1264.conf
@@ -0,0 +1,13 @@
+Alias /owncloud /usr/share/owncloud
+
+
+ Options +FollowSymLinks
+ AllowOverride All
+
+ order allow,deny
+ allow from all
+
+ = 2.3>
+ Require all granted
+
+
diff --git a/tests/apache-conf-files/passing/roundcube-1222.conf b/tests/apache-conf-files/passing/roundcube-1222.conf
new file mode 100644
index 000000000..72ced7fb3
--- /dev/null
+++ b/tests/apache-conf-files/passing/roundcube-1222.conf
@@ -0,0 +1,61 @@
+# Those aliases do not work properly with several hosts on your apache server
+# Uncomment them to use it or adapt them to your configuration
+# Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/
+# Alias /roundcube /var/lib/roundcube
+
+# Access to tinymce files
+
+ Options Indexes MultiViews FollowSymLinks
+ AllowOverride None
+ = 2.3>
+ Require all granted
+
+
+ Order allow,deny
+ Allow from all
+
+
+
+
+ Options +FollowSymLinks
+ # This is needed to parse /var/lib/roundcube/.htaccess. See its
+ # content before setting AllowOverride to None.
+ AllowOverride All
+ = 2.3>
+ Require all granted
+
+
+ Order allow,deny
+ Allow from all
+
+
+
+# Protecting basic directories:
+
+ Options -FollowSymLinks
+ AllowOverride None
+
+
+
+ Options -FollowSymLinks
+ AllowOverride None
+ = 2.3>
+ Require all denied
+
+
+ Order allow,deny
+ Deny from all
+
+
+
+
+ Options -FollowSymLinks
+ AllowOverride None
+ = 2.3>
+ Require all denied
+
+
+ Order allow,deny
+ Deny from all
+
+
diff --git a/tests/apache-conf-files/passing/semacode-1598.conf b/tests/apache-conf-files/passing/semacode-1598.conf
new file mode 100644
index 000000000..89e2fb25c
--- /dev/null
+++ b/tests/apache-conf-files/passing/semacode-1598.conf
@@ -0,0 +1,44 @@
+
+ ServerName semacode.com
+ ServerAlias www.semacode.com
+ DocumentRoot /tmp/
+ TransferLog /tmp/access
+ ErrorLog /tmp/error
+ Redirect /posts/rss http://semacode.com/feed
+ Redirect permanent /weblog http://semacode.com/blog
+
+#ProxyPreserveHost On
+# ProxyPass /past http://old.semacode.com
+ #ProxyPassReverse /past http://old.semacode.com
+#
+ # Order allow,deny
+ #Allow from all
+#
+
+ Redirect /stylesheets/inside.css http://old.semacode.com/stylesheets/inside.css
+ RedirectMatch /images/portal/(.*) http://old.semacode.com/images/portal/$1
+ Redirect /images/invisible.gif http://old.semacode.com/images/invisible.gif
+ RedirectMatch /javascripts/(.*) http://old.semacode.com/javascripts/$1
+
+ RewriteEngine on
+ RewriteRule ^/past/(.*) http://old.semacode.com/past/$1 [L,P]
+ RewriteCond %{HTTP_HOST} !^semacode\.com$ [NC]
+ RewriteCond %{HTTP_HOST} !^$
+ RewriteRule ^/(.*) http://semacode.com/$1 [L,R]
+
+
+
+
+
+ ServerName old.semacode.com
+ ServerAlias www.old.semacode.com
+ DocumentRoot /home/simon/semacode-server/semacode/website/trunk/public
+ TransferLog /tmp/access-old
+ ErrorLog /tmp/error-old
+
+ Options FollowSymLinks
+ AllowOverride None
+ Order allow,deny
+ Allow from all
+
+