이 Apache 2.2 mod_rewrite RewriteRule이 403에서 작동하지 않는 이유는 무엇입니까?

이 Apache 2.2 mod_rewrite RewriteRule이 403에서 작동하지 않는 이유는 무엇입니까?

내 안에는 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는 어떤 컨텍스트인가요? 그것은 가상 호스트 안에 있습니까?

다음은 동일한 결과를 얻지만 더 나은 결과를 얻습니다.

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

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

이상한 부작용도 없습니다.

관련 정보