.htaccess의 재 작성 규칙을 적용하려면 Apache를 다시 시작해야합니까?


98

.htaccess 파일을 프로덕션 서버로 푸시했지만 작동하지 않습니다. 다시 시작하는 것이 다음 단계입니까, 아니면 다른 것을 확인해야합니까?

답변:


93

.htaccess를 변경하기 위해 다시 시작할 필요 가 없습니다 . 다른 문제가 있습니다.

.htaccess에 명령문이 포함되어 있는지 확인하십시오.

RewriteEngine 켜기

httpd.conf에도있는 경우에도 필요합니다. 또한 httpd 프로세스에서 .htaccess를 읽을 수 있는지 확인하십시오.
error_log를 확인하십시오 . 사용중인 경우 .htaccess의 오류를 알려줍니다 . .htaccess에 의도적 인 구문 오류를 넣는 것은 파일이 사용되고 있는지 확인하는 좋은 방법입니다. 동일한 디렉토리의 모든 페이지에서 500 오류가 발생해야합니다.

마지막으로 httpd.conf에서 다음과 같은 명령을 사용하여 다시 쓰기 로그를 활성화 할 수 있습니다.

RewriteLog "로그 / rewritelog"

RewriteLogLevel 7

이렇게 생성 된 로그 파일은 일치하는 재 작성 규칙과 처리 방법에 대한 세부 정보를 제공합니다.


3
이것은 약간 오래된 것입니다. 비슷한 문제가 발생하여 특정 사용 사례에 대한 재 작성을 디버그하고 싶었습니다. 이 방법을 시도했지만 약간의 좌절과 파고 끝에 문제가 무엇인지 파악했습니다. 이것은 이전 버전의 아파치 용입니다. apache2.4의 경우> 위의 RewriteLog 및 LogLevel을 LogLevel alert rewrite:trace7. apache를 다시 시작한 후 error.log Hope에서 추적을 볼 수 있습니다. http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
Casper Wilkes

52

아니오 :

Apache는 웹 트리 내에 배치 된 특수 파일을 통해 구성의 분산 관리를 허용합니다. 특수 파일은 일반적으로이라고 부르지 .htaccessAccessFileName 지시문 에 모든 이름을 지정할 수 있습니다 ... .htaccess 파일은 모든 요청에서 읽히므로 이러한 파일의 변경 사항은 즉시 적용됩니다.


사이트 사용 파일의 '사용자 필요'에 사용자 이름을 추가 한 경우 경험적으로 다시 시작해야한다는 것을 알게되었습니다. 우아한 사람이합니다.
Ross

18

아파치 문서에서 : 가장 일반적으로 문제는 AllowOverride가 구성 지시문을 준수하도록 설정되지 않는다는 것입니다. 해당 파일 범위에 적용되는 AllowOverride None이 없는지 확인합니다. 이에 대한 좋은 테스트는 .htaccess 파일에 쓰레기를 넣고 다시로드하는 것입니다. 서버 오류가 생성되지 않으면 거의 확실히 AllowOverride None이 적용됩니다.


1
아파치에 대한 링크를 삭제 -에 AllowOverride : httpd.apache.org/docs/2.2/mod/core.html#AllowOverride
scunliffe

2
이 줄 "<directory /> </ directory>"를 내 .htaccess에 추가하여 로그에 오류를 생성합니다. "<디렉토리 허용되지 않음"이라고 표시되고 내 파일을 읽고 있음을 알고 있습니다.
Mnebuerquo

3

Apache에 mod_rewrite 모듈을 추가 하지 않은 경우에만 .

Apache ".conf"파일을 변경 한 경우에만 Apache를 다시 시작하면됩니다.



2

.htaccess의 경우 다시 시작하지 않아도 작동하지 않는 경우 가능한 이유는 다음과 같습니다.

  • AllowOverride httpd.conf 내에서 설정할 수있는 사용자를 설정할 수 없거나 서버 관리자에게 문의해야 할 수 있습니다.

  • .htaccess 파일 이름을 확인하십시오. htaccess.txt가 아닌 .htaccess 여야합니다 . 생성 방법 은 여기 를 참조 하십시오 .

  • 작동하는지 여부를 확인 하기 위해 Options -Indexes또는 deny all일종의 간단한 지시문을 사용하십시오.

  • 리디렉션에 대한 규칙이있는 경우 매번 브라우저 캐시를 지우거나 이전 리디렉션이 캐시 된 경우 작업이 작동하지 않는 것처럼 보입니다.


0

.htaccess에 무엇이 있습니까? RewriteRules? mod_rewrite가 설치되고 활성화되어 있는지 확인하십시오.

다른 것들? 해당 디렉터리에서 AllowOverride를 'all'로 설정해보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.