문제

다음 코드는 내부 서버 오류를 제공하며 이유를 결정할 수 없습니다.

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"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top