Apache .htaccess <if 모듈이 허용되지 않습니다.


13

PHP 5.5를 사용하여 Ubuntu Precise에서 Apache 실행

내 액세스를 시도 var/www/하면 500이 나옵니다.

/var/log/apache2/error.log

보여줍니다 :

/var/www/web/.htaccess: <IfModule not allowed here

내 .htacess는 다음과 같습니다

DirectoryIndex app.php


<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

    RewriteRule .? %{ENV:BASE}/app.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>       
        RedirectMatch 302 ^/$ /app.php/       
    </IfModule>
</IfModule>

내 apache.conf에 다음을 추가했습니다.

<Directory />
AllowOverride ALL
</Directory>

그리고 아파치를 다시 시작한 후에 작동했습니다.

답변:


25

.htaccess 파일에서 구성 할 수 있도록 아파치를 구성해야합니다. 따라서 디렉토리 섹션에서 옵션이 있는지 확인하십시오

Allowoverride ALL 

allowoverride에 대한 자세한 내용은 .

설치에서 mod_rewrite 만 사용하면 FileInfo 만 설정할 수 있습니다. 다른 사이트로 리디렉션을 수행 할 수 있도록 항상 Options 매개 변수를 SymLinksIfOwnerMatch로 설정합니다 .

Allowoverride FileInfo 
Options SymLinksIfOwnerMatch

이 구성을 이미 설정 한 경우 가상 호스트 구성에 정보를 추가하십시오.


이것은 Apache를 새로 설치 한 것입니다. apache2.conf에 <Directory /> 섹션이 없습니다. 위에 업데이트를 추가했습니다. 감사합니다
Kiksy

Apache를 다시 시작하는 것을 잊었습니다. 그게 지금 작동합니다.
Kiksy

1
결국 나는 Directory지시어 가 누락되었습니다 . 일단 추가되면 제대로 작동했습니다. 나는 이것이 2.2 버전과 함께 사용 되었기 때문에 아파치 2.4 버전에서 새로운 것이라고 생각한다.
Alexis Wilke

1
예, 허용 된 무시의 기본값은 Apache 2.3.9에서 변경되었습니다.
mlissner
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.