
私の中に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>
奇妙な副作用もありません。