2009-07-05 9 views
1

.htaccess 파일과 Apache를 사용하여 조건부 재 작성 규칙을 만들려고합니다..htaccess 조건부 재 작성

기본적으로 필요한 것은 아파치가 요청한 파일이 서브 폴더에 있는지, 아파치가이 기존 파일을 제공하는지, 파일이 존재하지 않는 경우 아파치가 index.php를로드하는지 확인하는 것입니다. 파일.

내가 사용 폴더 구조는 다음과 같습니다 또한

- /gallery 
    - /cache 
    - index.php 
    - .htaccess 

, 내가 가지고있는 htaccess로 이제이 작동하지만

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^(.+) - [PT,L] 
RewriteRule ^(.*)$ index.php/$1 [L] 

경우에만 내가 볼려고 파일 for가/gallery 폴더에 있지만 파일이/cache 폴더에 있는지를 알아야합니다.

누구나 달성하기 위해이 규칙을 수정하는 방법을 알고 있습니까? 요청 된 경로는 경로가 캐시 디렉토리에있는 기존 파일 인 경우

RewriteCond %{REQUEST_URI} ^/(([^/]+/)*)gallery/ 
RewriteCond %{DOCUMENT_ROOT}%1gallery/cache/$0 -f 
RewriteRule ^.+ cache/$0 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^.* index.php/$0 [L] 

첫 번째 규칙 검사 :

+0

mod_rewrite가이 작업을 수행 할 수 있다고 생각하지 않지만 가능한 경우보고 싶습니다. – MitMaro

답변

1

이 규칙을 시도

titel, 사전에 감사합니다 . 그렇다면 요청을 해당 파일에 다시 씁니다.

+0

먼저이 문제에 도움을 주신 것에 대해 감사드립니다. 그러나 제공 한 스크립트가 내 설정에서 작동하지 않는 것 같습니다. "example.com/gallery/220-165-clouds.jpg"와 같은 URL을 사용하여 액세스하려는 경우/cache 폴더에 이미지가 있지만 이미지가 표시되지 않습니다. index.php 파일도 가져 오지 마라. 는 내가 얻을 것은 404 오류 :(이다 당신이 – titel

+0

그냥 약간의 오타 그것은 그것은 나를 위해 잘 작동 지금 – Gumbo

+0

작업의 mod_rewrite의 로깅 HTTP와 디버깅을 시도한다 그 이유가 무엇인지 아십니까?... : //httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteloglevel – Gumbo