2009-07-05 22 views
1

.htaccessファイルとApacheを使用して条件付き書き換えルールを作成しようとしています。.htaccess条件付き書き換え

基本的に必要なのは、要求されたファイルがサブフォルダに存在するかどうか、あるいはApacheがこの既存のファイルを提供するかどうかを確認することです。または、ファイルが存在しない場合、Apacheはindex.phpファイル。

私が使用しているフォルダ構造は次のとおりです。また、私が今持っているの.htaccessは、しかし、これは、ファイルが、私が見しようとしている場合にのみ

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

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

動作しますforは/ galleryフォルダにありますが、ファイルが/ cacheフォルダに存在するかどうかを調べる必要があります。

誰でもこのルールを変更する方法を知っていますか?

+0

私はmod_rewriteがこれを行うことはできませんが、可能かどうか見てみたいと思っています。 – MitMaro

答えて

1

、事前に

TITELをいただき、ありがとうございますこれらのルールを試してみてください。

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

まず、お手数をおかけしていただきありがとうございます。 しかし、あなたが提供したスクリプトは、自分のセットアップでは動作していないようです。 "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