나는이 RewriteRule
A의 .htaccess
아무것도하지 않는 파일입니다. 이 문제를 어떻게 해결합니까?
.htaccess
파일이 Apache에서 읽고 준수되고 있는지 어떻게 확인할 수 있습니까? 에코 “작동 중”메시지를 작성할 수 있습니까? 작성하면 해당 라인이 어디에 에코됩니까?.htaccess
파일이 사용되지 않는 경우 Apache에서 사용하도록하려면 어떻게해야합니까?- (가) 경우
.htaccess
사용되는하지만 내가RewriteRule
여전히 영향을하지 않습니다, 나는 디버그에 더 무엇을 할 수 있습니까?
답변
당신에 일부 정크 값을 입력 .htaccess
예를 들어 foo bar
, sakjnaskljdnas
어떤 키워드가 없습니다 htaccess로 인식하고 URL을 방문하십시오. 작동하는 경우
500 내부 서버 오류
인터넷 서버 오류
서버에 내부 오류 또는 잘못된 구성이 발생하여 요청을 완료 할 수 없습니다 ….
나는 당신이 곧 그것을 넣는 것이 좋습니다 RewriteEngine on
.
당신은 당신의 기계에 있기 때문에. 아파치 .conf
파일에 대한 액세스 권한이 있다고 가정 합니다.
.conf
파일을 열고 다음 과 유사한 줄을 찾습니다.
LoadModule rewrite_module modules/mod_rewrite.so
주석 처리 된 경우 (#), 주석 처리를 제거하고 아파치를 다시 시작하십시오.
재 작성을 기록하려면
RewriteEngine On
RewriteLog "/path/to/rewrite.log"
RewriteLogLevel 9
위의 3 줄을 virtualhost
. httpd를 다시 시작하십시오.
RewriteLogLevel 9
Level에 높은 값을 사용하면 Apache 서버가 크게 느려집니다! 디버깅을 위해서만 2 이상의 레벨에서 재 작성 로그 파일을 사용하십시오! 레벨 9는 거의 모든 재 작성 로그 세부 사항을 기록합니다.
최신 정보
Apache 2.4에서 변경된 사항 :
FROM 2.2에서 2.4로 업그레이드
RewriteLog 및 RewriteLogLevel 지침은 제거되었습니다. 이 기능은 이제 LogLevel 지시문을 사용하여 mod_rewrite 모듈에 대한 적절한 로깅 수준을 구성하여 제공됩니다 . mod_rewrite 로깅 섹션도 참조하십시오.
LogLevel에 대한 자세한 내용은 LogLevel 지시문을 참조하십시오.
당신은 성취 할 수 있습니다
RewriteLog "/path/to/rewrite.log"
지금 이런 식으로
LogLevel debug rewrite_module:debug
답변
‘정크 값 입력’대답은 나를 위해 트릭을 수행하지 않았으며 입력 된 정크에도 불구하고 내 사이트가 계속로드되었습니다.
대신 .htaccess 파일 맨 위에 다음 줄을 추가했습니다.
deny from all
그러면 .htaccess가 선택되었는지 여부를 빠르게 알 수 있습니다. .htaccess를 사용하는 경우 해당 폴더의 파일이 전혀로드되지 않습니다.
답변
일반적으로 .htaccess의 모든 변경 사항은 가시적 인 효과를 가져야합니다. 효과가 없으면 다음과 같이 구성 아파치 파일을 확인하십시오.
<Directory ..>
...
AllowOverride None
...
</Directory>
다음으로 변경해야합니다.
AllowOverride All
그리고 .htaccess 파일에서 지시문을 변경할 수 있습니다.
답변
아마도 더 논리적 인 방법은 파일 (예 : test.html)을 만들고 일부 콘텐츠를 추가 한 다음 색인 페이지로 설정하는 것입니다.
DirectoryIndex test.html
대부분의 경우 .htaccess 규칙은 디렉토리 / 파일 수준에서 작업하는 Apache 구성을 재정의합니다.
답변
세 가지 질문 중 첫 번째 질문에 대답하려면 .htaccess 파일이 작동하는지 확인하는 간단한 방법은 .htaccess 파일 상단에서 사용자 지정 오류를 트리거하는 것입니다.
ErrorDocument 200 "Hello. This is your .htaccess file talking."
RewriteRule ^ - [L,R=200]
htaccess로 파일을 읽을하지 않을 경우 두 번째 질문에, 서버의 아파치 구성했다고 할 수있다 AllowOverride
로 설정 None
. Apache의 문서에는 .htaccess가 적용되는 것을 방해 할 수있는 다른 경우에 대한 문제 해결 팁 이 있습니다.
마지막으로 세 번째 질문에 답하기 위해 재 작성 규칙에서 참조 하는 특정 변수 를 디버깅해야 하거나 규칙과 독립적으로 평가하려는 표현식 을 사용하는 경우 다음을 수행 할 수 있습니다.
참조 하는 변수 를 출력하여 예상 한 값이 있는지 확인하십시오.
ErrorDocument 200 "Request: %{THE_REQUEST} Referrer: %{HTTP_REFERER} Host: %{HTTP_HOST}"
RewriteRule ^ - [L,R=200]
식을<If>
지시문 에 넣어 독립적으로 테스트하십시오 . 이를 통해 표현식이 올바르게 작성되었는지 또는 예상 할 때 일치하는지 확인할 수 있습니다.
<If "%{REQUEST_URI} =~ /word$/">
ErrorDocument 200 "Your expression is priceless!"
RewriteRule ^ - [L,R=200]
</If>
행복한 .htaccess 디버깅!
답변
apache bin 디렉토리에 대한 액세스 권한이 있으면 사용할 수 있습니다.
httpd -M
로드 된 모듈을 먼저 확인합니다.
info_module (shared) isapi_module (shared) log_config_module (shared) cache_disk_module (shared) mime_module (shared) negotiation_module (shared) proxy_module (shared) proxy_ajp_module (shared) rewrite_module (shared) setenvif_module (shared) socache_shmcb_module (shared) ssl_module (shared) status_module (shared) version_module (shared) php5_module (shared)
간단한 지시 후 같은 Options -Indexes
또는 deny from all
htaccess로가 제대로 작동하는지 공고히 할 것이다.
답변
htaccess 재 작성 규칙을 테스트하려면 규칙을 적용 할 URL을 입력하고 더 큰 입력 영역에 htaccess의 내용을 배치 한 다음 “테스트”버튼을 누르십시오.