Programing

Apache mod_rewrite를 디버깅하는 방법

알 수 없는 사용자 2020. 5. 30. 09:09
반응형

Apache mod_rewrite를 디버깅하는 방법


mod_rewrite에는 두 가지 주요 문제가 있습니다.

1) 잘못된 규칙이있을 때 의미있는 오류가보고되지 않습니다

여기에 이미지 설명을 입력하십시오

2) 각 수정 사항을 안정적으로 테스트하려면 크롬 캐시를 삭제해야합니다. 이것은 로켓 과학이 아니지만 Ctrl + Shift + Delete를 누르고 확인을 클릭 한 다음 창을 닫고 다시로드해야합니다.

나는 어떤 전문가가 mod_rewrite 코드를 효율적으로 관리하기 위해 자신의 비밀을 기꺼이 공유하고 있는지 확인하고 싶습니다.


한 가지 트릭은 다시 쓰기 로그를 설정하는 것입니다. 켜려면 아파치 기본 설정 또는 현재 가상 호스트 파일 (이 아닌) 에서 다음 줄을 시도하십시오 .htaccess.

RewriteEngine On
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3

Apache httpd 2.4 부터 mod_rewrite RewriteLog 및 RewriteLogLevel 지시문은 새로운 모듈 별 로깅 구성으로 완전히 대체되었습니다.

LogLevel alert rewrite:trace6

Ben에서 언급 한 LogRewrite 지시문은 Apache 2.4에서 더 이상 사용할 수 없습니다. 대신 LogLevel 지시문을 사용해야합니다. 예 :

LogLevel alert rewrite:trace6

http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging을 참조하십시오 .


기본 URL 확인을 위해 수동 브라우저 대신 명령 줄 페처를 사용 wget하거나 curl테스트를 수행하십시오. 그런 다음 캐시를 지울 필요가 없습니다. 테스트 페치를 다시 실행하려면 위쪽 화살표와 셸을 입력하십시오.


있다 htaccess로 테스터 .

특정 URL에 대해 테스트 된 조건, 조건을 충족하는 규칙 및 실행 된 규칙을 보여줍니다.

그래도 약간의 결함이있는 것 같습니다.


를 기반으로 벤의 대답 (내 경우에는 데비안) 리눅스에 아파치를 실행하는 경우에는 다음을 수행 할 수 있습니다.

먼저 rewrite-log.load 파일을 작성하십시오.

/etc/apache2/mods-availabe/rewrite-log.load

RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3

그런 다음 입력

$ a2enmod 다시 쓰기-로그

뒤에

$ 서비스 아파치 2 재시작

다시 쓰기 규칙 디버깅을 마치면

$ a2dismod 재 작성 로그 및 서비스 apache2 restart

참고 URL : https://stackoverflow.com/questions/9632852/how-to-debug-apache-mod-rewrite

반응형