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