mod_rewrite에는 두 가지 주요 문제가 있습니다.
1) 잘못된 규칙이있을 때 의미있는 오류가보고되지 않습니다

2) 각 수정 사항을 안정적으로 테스트하려면 크롬 캐시를 삭제해야합니다. 이것은 로켓 과학이 아니지만 Ctrl + Shift + Delete를 누르고 확인을 클릭 한 다음 창을 닫고 다시로드해야합니다.
나는 어떤 전문가가 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
RewriteEngine On섹션을 활성화 .htaccess한 경우 아무것도 기록되지 않기 때문에 섹션도 있어야합니다 .
Ben에서 언급 한 LogRewrite 지시문은 Apache 2.4에서 더 이상 사용할 수 없습니다. 대신 LogLevel 지시문을 사용해야합니다. 예 :
LogLevel alert rewrite:trace6
http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging을 참조하십시오 .
tail -f error_log|fgrep '[rewrite:'
AllowOverride로 설정되어 있어야했다 All!
기본 URL 확인을 위해 수동 브라우저 대신 명령 줄 페처를 사용 wget하거나 curl테스트를 수행하십시오. 그런 다음 캐시를 지울 필요가 없습니다. 테스트 페치를 다시 실행하려면 위쪽 화살표와 셸을 입력하십시오.
를 기반으로 벤의 대답 (내 경우에는 데비안) 리눅스에 아파치를 실행하는 경우에는 다음을 수행 할 수 있습니다.
먼저 rewrite-log.load 파일을 작성하십시오.
/etc/apache2/mods-availabe/rewrite-log.load
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
그런 다음 입력
$ a2enmod 다시 쓰기-로그
뒤에
$ 서비스 아파치 2 재시작
다시 쓰기 규칙 디버깅을 마치면
$ a2dismod 다시 쓰기 로그 및 서비스 apache2 restart
LogLevel warn rewrite:trace8또는 LogLevel info rewrite:trace88은 1-8의 숫자 일 수 있습니다.