2011-03-28 4 views
0

먼저 간단한 질문입니다. 이 작업을 수행 할 수없는 경우 대체 솔루션을 찾는 질문을 게시 할 것입니다.RewriteCond에 대한 mod_rewrite의 REQUEST_FILENAME 필터링

간단히 말해 RewriteCond가 검사 할 필터링 된 파일 경로를 구축 할 방법이 필요합니다.

예를 들어,이 URL : /images/photos/gallery/beach.jpg/unique-identifier.jpg/width:50;height:50을 사용하여이 파일의 이름이 /images/__resized/photos/gallery/beach.jpg/unique-indentifier.jpg인지 확인하고 싶습니다.

상황을 더욱 복잡하게 만들려면 이미지 파일을 찾을 수없는 경우 전체 URL을 크기 조정 된 이미지를 생성하는 크기 조정 스크립트에 전달하고 마지막으로 전체 URL을 가리키는 리디렉션 헤더를 보내야합니다.

자세한 내용이 필요한지 문의하십시오. 의도적으로 영어를 사용하지 않았기 때문에 영어를 모국어로 사용하지 않았기 때문에 자세한 내용을 추가하면 내가하는 일을 이해하는 것이 더 어려워 질 것입니다. :)

답변

0

먼저이 규칙은 파일 이름이 귀하의 특정 형식. 그런 다음 파일이 있는지 확인하십시오 (__resized 추가 및 마지막 부분 생략). 그 다음 존재하지 않는 경우는 resizer.php를 호출합니다 : 그것은 $_SERVER['REQUEST_URI']원래 URL 액세스 할 수 있기 때문에 리사이 스크립트에 모든 GET 매개 변수를 제공 할 필요가 없습니다

RewriteCond %{REQUEST_URI} ^images/(.*)/width:[0-9]+;height:[0-9]+ 
RewriteCond %{DOCUMENT_ROOT}/images/__resized/%1 !-f 
RewriteRule (.*) resizer.php 

.

당신은 명시 적으로 언급하지는 않았지만, 그런 파일이 존재한다면 사용자에게 보내고 싶을 것입니다.

RewriteCond %{REQUEST_URI} ^images/(.*)/width:[0-9]+;height:[0-9]+ 
RewriteCond %{DOCUMENT_ROOT}/images/__resized/%1 -f 
RewriteRule (.*) /images/__resized/%1 
+0

빠른 답변 감사드립니다. 그것이 내 문제를 해결하지 못했지만, 그것은 내 생각의 라인이 완전히 잘못되었음을 깨닫게했다. – jpeltoniemi

+0

@Pichan 언제나 도와 줘서 다행이다 :) "이 문제는이 방법으로는 해결할 수 없다. .. "같은 것을 시도하는 다른 사람들을 위해. 그냥 생각. – vbence

+0

내일 할게. 바로 지금 3시 26 분이고 나는 아직도이 일을하고있는 사무실에 있습니다. 왼쪽의 유일한 문제는 RewriteRule (. *)과 같이 요청한 파일을 현재 RewriteCond에 상대적으로 가져올 수 없다는 것입니다. – jpeltoniemi

관련 문제