Por que este mod_rewrite RewriteRule do Apache 2.2 não funciona em 403s?

Por que este mod_rewrite RewriteRule do Apache 2.2 não funciona em 403s?

No meu httpd.confeu tenho:

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

E no meu .htaccessarquivo eu tenho:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Quando eu HTTP, example.com/.htespero ser redirecionado para www.example.com/.ht, mas em vez disso, o RewriteRule nunca acontece. O cliente nunca é redirecionado para www. O cliente é redirecionado corretamente em todos os outros casos.

Não tenho nenhuma diretiva ErrorDocument.

Apenas me perguntando por que isso acontece e como corrigir esse comportamento no 403.

Responder1

Como você tem acesso ao httpd.conf, não há razão para usar .htaccess.

Em que contexto está o FilesMatch? Está dentro de um vhost?

O seguinte alcança o mesmo resultado, mas melhor:

<VirtualHost *:80>
  ServerName example.com
  Redirect / http://www.example.com/
</VirtualHost>

<VirtualHost *:80>
  ServerName www.example.com
  DocumentRoot /var/www/something
</VirtualHost>

Também não há efeitos colaterais estranhos.

informação relacionada