Mod Rewrite Skip Rules Server 오류
-
06-09-2019 - |
문제
다음 코드는 내부 서버 오류를 제공하며 이유를 결정할 수 없습니다.
RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^.*$ - [S=1]
RewriteRule ^(.*)$ html/$1.html
URL을 취하는 것뿐입니다
/test
그리고 참조하십시오
/html/test.html
무대 뒤에서, 그러나 환경이 생산 인 경우에만 Setenv가 설정 한 것
올바른 솔루션이 없습니다
다른 팁
어쩌면 내 모드 재 작성이 녹슬지 만 이해한다면, 그것은 당신이 말하는 것과 반대되는 것 같습니다. 응용 프로그램이 생산 인 경우 URL을 다시 작성하지 않으며 규칙을 건너 뜁니다). 그래도 내부 서버 오류를 일으킬 수있는 것은 없습니다.
당신이 말하는 것을하기 위해서는 다음과 같은 것이 필요합니다.
RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} !=production
RewriteRule ^.*$ - [S=1]
RewriteRule ^(.*)$ html/$1.html
여전히 문제가있는 경우 Apache 오류 로그를 확인하십시오. 내부 서버 오류 500에 대한 가장 적합한 정보가 있습니다.
토드 가드너 (Todd Gardner)가 말한 것처럼, 중복 규칙을 제거하고 조건을 두 번째 규칙에 바인딩합니다.
RewriteEngine On
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^(.*)$ html/$1.html
또한 재귀를 피하기 위해이 규칙을 사용하겠습니다.
RewriteCond %{ENV:APPLICATION} =production
RewriteRule !^html/ html%{REQUEST_URI}.html
유용한 오류를 얻으려면 Mod Rewrite 로깅을 켜십시오.
RewriteLog rewrite_log
ReWriteLogLevel 2
구두 로그 레벨을 조정하십시오.
올바르게 비교하려면 문자열 주위에 인용문을 넣어야합니다.
RewriteCond %{ENV:APPLICATION} !="production"
제휴하지 않습니다 StackOverflow