RewriteCond 및 RewriteRule을 무시하는 Apache

RewriteCond 및 RewriteRule을 무시하는 Apache

나는 여기서 미쳐 가고있다. Apache는 RewriteCondRewriteRule. RewriteEngine이 On. 나는 잘 작동하는 다른 줄 RewriteCondRewriteRule줄을 가지고 있었고 Rewrite 로그를 확인했을 때(활성화했음) 이 두 줄을 건너뛴 것으로 나타났습니다. 문제를 일으키는 것이 없는지 확인하기 위해 다른 모든 항목을 다듬었고, 확실히 Apache는 이 구성에서 오류 없이 행복하게 진행됩니다.

DocumentRoot /var/sites/public
<Directory /var/sites/public>
    AllowOverride None
    SetEnv APPLICATION_ENV production

    RewriteCond %{HTTP_HOST} !^$
    RewriteRule ^/(.*) http://www.example.com/$1 [L,R]

    Order allow,deny
    allow from all
</Directory>

나는 여기에 너무 오랫동안 쳐다보면서 눈이 멀었던 눈에 띄는 오류가 있다고 확신합니다. 어떤 도움이라도 주시면 감사하겠습니다.

참고: Vhost에는 이 기능이 없습니다. 구성에 Vhost가 없습니다. RewriteCond를 제거했는데 여전히 오류가 발생하지 않습니다. 나는 RewriteEngine On에서도 이것을 시도했습니다.

답변1

간단히 살펴보면 RewriteCond는 아무것도 아닌 것처럼 보이는 것 외에는 어떤 것과도 일치하지 않는다는 것을 알 수 있습니다. mod_rewrite가 그것에 대해 어떻게 생각하는지 잘 모르겠습니다.

규칙을 사용하여 정확히 무엇을 하려는 건가요?

예를 들어 (www.)example.com을 제외한 모든 도메인과 일치하여 www.example.com으로 전달하려는 경우 다음과 같은 규칙이 있습니다.

RewriteCond %{HTTP_HOST} !^(www.)?example\.com$
RewriteRule (.*) http://www.example.com/$1 [R,L]

답변2

당신도 이것을 원합니다 :

RewriteCond %{HTTP_HOST} .

...또는 다른 방식으로 작성되었습니다.

RewriteCond %{HTTP_HOST}!=""

그래서:

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^(www.)?example\.com$
RewriteRule (.*) http://www.example.com/$1 [R,L]

관련 정보