
In meinem httpd.conf
habe ich:
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>
Und in meiner .htaccess
Datei habe ich:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Wenn ich per HTTP auf umleite, example.com/.ht
erwarte ich eine Umleitung zu www.example.com/.ht
, aber stattdessen tritt die RewriteRule nie ein. Der Client wird nie auf www umgeleitet. In allen anderen Fällen wird der Client ordnungsgemäß umgeleitet.
Ich habe keine ErrorDocument-Direktiven.
Ich frage mich nur, warum dies passiert und wie dieses Verhalten bei 403-Fehlern korrigiert werden kann.
Antwort1
Da Sie Zugriff auf httpd.conf haben, gibt es keinen Grund, .htaccess zu verwenden.
In welchem Kontext steht das FilesMatch? Befindet es sich in einem virtuellen Host?
Mit dem Folgenden erzielen Sie das gleiche Ergebnis, allerdings besser:
<VirtualHost *:80>
ServerName example.com
Redirect / http://www.example.com/
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/something
</VirtualHost>
Es gibt auch keine merkwürdigen Nebenwirkungen.