.htaccess에서 다시 쓰기 로그를 사용할 수없는 이유는 무엇입니까?


9

다시 쓰기 로깅을 활성화하여 다시 쓰기 규칙을 디버깅 할 수 있지만 RewriteLog 지시문을 추가하면 500 오류가 발생합니다.

버전 정보 :

Ubuntu 14.04

Server version: Apache/2.4.12 (Ubuntu)
Server built:   Feb  4 2015 14:22:06

내용 .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteLog /var/log/apache2/rewrite.log
RewriteLogLevel 5

RewriteBase /

RewriteRule ^/wordpress/wp-content/(.*)$ /wp-content/$1 [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

오류 로그에 다음이 표시됩니다.

/var/www/path.to/wordpress/.htaccess: Invalid command 'RewriteLog', perhaps misspelled or defined by a module not included in the server configuration

답변:


14

.htaccess파일 에서 로깅을 구성 할 수 없다는 사실을 잊었을뿐만 아니라 Apache 버전 문제로 판명되었습니다. RewriteLog 지시문은 최신 버전으로 대체되었으며 Virtualhost 구성에 다음을 추가하면 재 작성 로그가 활성화되었습니다.

LogLevel alert rewrite:trace3 (can be increased to trace8)

매뉴얼에서 :

이전 버전의 mod_rewrite에 익숙한 사람들은 의심 할 여지없이 RewriteLog 및 RewriteLogLevel 지시문을 찾을 것입니다. 이 기능은 위에서 언급 한 새로운 모듈 별 로깅 구성으로 완전히 대체되었습니다.

오류 로그에서 이러한 메시지를 필터링하려면 다음과 같이 할 수 있습니다.

tail -f error_log|fgrep '[rewrite:'

귀하의 질문은 원래 apache-2.2로 태그되었습니다 ? 질문 자체의 버전을 간과했을 수도 있습니다. 잘 발견되었습니다.
HBruijn

이것이 누군가에게 도움이되는 경우, 내 문제는 포트 80의 VHost에서 로깅을 활성화했지만 443은 활성화하지 않았다는 것입니다. HTTPS를 사용하고 있었기 때문에 로깅이 작동하지 않았습니다. 그 바보 같은 실수를 찾기 위해 시간이
걸렸습니다

난 당신이 mod_log_debug활성화 해야 추가하고 싶습니다 ...
thoni56

4

나는 스스로 반복하는 것을 도울 수 없다 :

.htaccess를 사용하고 ServerFault에서 질문하는 대부분의 사람들은 .htaccess를 사용해서는 안됩니다. .htaccess는 최종 사용자 솔루션이므로 관리자를 대상으로하지 않습니다.

당신은해야 완전히 .htaccess 파일을 사용하지 않는 당신은 아파치 서버의 주 설정 파일에 액세스 할 수있는 경우. .htaccess파일을 사용하면 Apache http 서버 속도가 느려집니다. .htaccess 파일에 포함 할 수있는 지시문은 더 나은 성능과 동일한 효과를 가지므로 Directory 블록에 더 잘 설정됩니다.
출처 : Apache manual

구성을 게시하는 대부분의 사람들 은 이유를 이해하지 않고 .htaccess 파일을 맹목적으로 복사하는 데 관심 이있는 화물 컬트 프로그래머 인 것 같습니다 .

문제는 주요한 예입니다. RewriteLog지시어는 서버 구성 또는 가상 호스트 의 컨텍스트 에서만 유효 합니다 ...

즉 , 파일에 허용되지 않습니다.htaccess !


4
로그를 찾는 것은 정확히 배우고 싶지 않고 복사하려는 사람이 할 것입니다. Apache가 클래식 catch-22를 설정 한 것 같습니다 . 서버 루트에 액세스 할 수없는 경우 .htaccess 만 사용해야 합니다. 그러나 서버 루트에 액세스 할 수있는 경우에만 로깅을 켤 있습니다. 그들이 당신이 .htaccess에이 모든 재 작성을하게한다면, 그들은 당신이 무엇을하고 있는지를 기록하도록해야합니다.
마크 베리

5
Wordpress와 같은 일부 응용 프로그램은 디버깅해야하는 .htaccess 파일을 생성합니다. 여기에 해당되는 것처럼 보입니다. .htaccess 파일에서 로깅하는 것은 다른 사람의 불가피한 정규식을 해결하려고 할 때 논리적 인 첫 단계입니다.
KeithL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.