Warum funktioniert diese Apache 2.2 mod_rewrite RewriteRule bei 403-Fehlern nicht?

Warum funktioniert diese Apache 2.2 mod_rewrite RewriteRule bei 403-Fehlern nicht?

In meinem httpd.confhabe ich:

<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
</FilesMatch>

Und in meiner .htaccessDatei 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/.hterwarte 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.

verwandte Informationen