월별 글 목록: 2021년 6월월

VirtualHost에 “AllowOverride All”이 있어도 .htaccess가 무시됩니다. AllowOverride All

Fedora 13에서 LAMP 서버를 실행 중입니다. 그러나 방금 현재 사이트의 docroot 폴더에 “.htaccess”파일을 추가하여 완전히 무시했습니다.

이 테스트를 포함하여 6 가지 다른 테스트를 시도했습니다.

RewriteEngine on
RewriteBase /

RewriteRule ^.*$ index.php

그러나 이미지와 다른 모든 페이지는 정상적으로로드되고 존재하지 않는 파일은 여전히 ​​404를로드합니다.

order deny,allow
deny from all

그러나 모든 페이지는 여전히 정상적으로로드됩니다. .htaccess 파일은 100 % 무시됩니다.

가상 호스트 레코드를 /etc/httpd/conf.d/virtual.conf에 넣습니다. 다음과 같이 보입니다 :

NameVirtualHost *

<VirtualHost *>
    ServerName              intranet
    DocumentRoot            /var/www/default
    <Directory "/var/www/default">
        Options FollowSymLinks
        AllowOverride All

        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *>
    ServerName              ourwebsite.com
    DocumentRoot            /var/www/html/ourwebsite.com/docroot
    <Directory "/var/www/html/ourwebsite.com/docroot">
        Options FollowSymLinks
        AllowOverride All

        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

서버가 .htaccess파일 을 완전히 무시하게 만드는 원인은 무엇입니까 ??

편집하다:

변경 사항이 무시되고 있음을 더 잘 보여주기 위해 .htaccess 파일을 위의 항목으로 변경했습니다. 프로덕션 서버에서 똑같은 .htaccess 파일을 시도했지만 정상적으로 작동했습니다.

편집 2 :

네, 새로운 정보가 있습니다! 테스트 목적으로 모든 “AllowOverride”지시문을으로 일시적으로 변경했습니다 AllowOverride All. 첫 번째 디렉토리 항목이 다른 모든 항목을 압도하는 것으로 나타났습니다.

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

로 변경하면 AllowOverride All.htaccess 파일이 적용되기 시작합니다. AllowOverride All구성 파일 의 다른 모든 지시문이 무시되는 것과 같습니다 !

무엇을 주는가 ??



답변

믿을 수 없는. 이것이 개발 서버라고 말한 것을 기억하십니까? 예 .. 가상 호스트 항목이 실제로 다음과 같습니다.

<VirtualHost *>
    ServerName              dev.ourwebsite.com
    DocumentRoot            /var/www/html/dev.ourwebsite.com/docroot
    <Directory "/var/www/html/ourwebsite.com/docroot">
        Options FollowSymLinks
        AllowOverride All

        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

당신은 그것을 봅니까? 글쎄요. 잊어 버렸습니다. “디렉토리”항목을 ourwebsite.com 대신 dev.ourwebsite.com으로 변경하면 큰 차이가 있습니다. 디렉토리가 존재하지 않으면 Apache에서 오류가 발생했다고 가정했습니다. 그러나 이는 DocumentRoot 지시문에만 적용됩니다. 일치 기반-들어오는 요청과 일치하는 경우 규칙을 적용하지만, 그렇지 않으면 매직 유니콘에서 AllowOverride에 알려주더라도 상관 없습니다.

다른 사람들에게도 교훈이 되십시오. 다른 모든 것이 실패하면 전능 한 오타를 고려하십시오.


답변

virtualhosts 선언 위의 ‘httpd.conf’에 다른 “AllowOverride None”이 있는지 확인하십시오. docroot에 “AllowOverride None”이있을 수 있습니다.


답변

세 가지 추측 :

실제로 쉼표 뒤에 공백 order deny, allow.htaccess있습니까? 아파치는 그것을 좋아하지 않습니다. F13에서 저에게 500을 받았습니다.

당신은 가지고 있습니까 AccessFileName지시 어디를?

selinux를 사용하는 경우 파일 ( ls -lZ)에 대한 올바른 컨텍스트가 있습니까?


답변

나는 이것을 새로운 서버에서 가지고 있었고 결국 mod-rewrite가 기본적으로 활성화되어 있지 않다는 것을 깨달았다.

ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load


답변