
В моем случае httpd.conf
есть:
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>
А в моем .htaccess
досье есть:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Когда я делаю HTTP на , example.com/.ht
я ожидаю перенаправления на www.example.com/.ht
, но вместо этого RewriteRule никогда не происходит. Клиент никогда не перенаправляется на www. Клиент перенаправляется правильно во всех других случаях.
У меня нет никаких директив ErrorDocument.
Просто интересно, почему это происходит и как исправить такое поведение при ошибке 403.
решение1
Поскольку у вас есть доступ к httpd.conf, нет смысла использовать .htaccess.
В каком контексте находится FilesMatch? Он внутри vhost?
Следующий вариант дает тот же результат, но лучше:
<VirtualHost *:80>
ServerName example.com
Redirect / http://www.example.com/
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/something
</VirtualHost>
Никаких странных побочных эффектов также не наблюдается.