버전이 지정된 파일 이름이있는 존재하지 않는 파일을 현재 버전으로 리디렉션하고 싶습니다. 요청 된 파일 이름의 패턴에 따라 두 개의 대상 파일이 있습니다.
예를 들어 현재 파일은 setup-win-3-1-0.exe 입니다. setup-win-2-7-1.exe (존재하지 않음)에 대한 요청 은 이전 파일로 리디렉션됩니다. (그리고 setup-mac-2-7-1.dmg는 setup-mac-3-1-0.dmg로 이동합니다)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^setup-win-[^.]+\.exe$ setup-win-%{ENV:DOWNLWIN}.exe [L,R=301,NC]
RewriteRule ^setup-mac-[^.]+\.dmg$ setup-mac-%{ENV:DOWNLMAC}.dmg [L,R=301,NC]
(ENV : DOWNL은 이전에 설정되었으며 명확성을 위해 생략)
나는 웹을 검색하고 몇 가지 모순을 발견했습니다 .RewriteCond는 다음 RewriteRule에만 적용되고 마지막 플래그가있는 RweriteRule을 찾을 때까지 적용되는 다른 곳에서만 적용되는 것을 보았습니다.
RewriteCond가 두 줄에 모두 적용됩니까?
대답은 아니오 입니다. RewriteCond
가장 가까운 RewriteRule
. RewriteRule
지시문을 사용하여 정의 된 둘 이상의 규칙에는 적용되지 않습니다 .
대체 접근 방식 :RewriteCond
모든 규칙 이전에 계속 해서 원하지 않는 경우 RewriteCond
. 아래 예를 고려하십시오.
RewriteEngine
# skip all the rules *below* of comdition is met
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^setup-win-[^.]+\.exe$ setup-win-%{ENV:DOWNLWIN}.exe [L,R=301,NC]
RewriteRule ^setup-mac-[^.]+\.dmg$ setup-mac-%{ENV:DOWNLMAC}.dmg [L,R=301,NC]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다