2011-07-06 18 views
0

存在しないファイルにすべての要求を書き換えようとしていますが、フォルダにはその要求が書き換えられません。私は何を意味フォルダが存在するがファイルが存在しない場合にのみ書き換えます。

は次のとおりです。

は、私は、このフォルダ構造を持っていると言う:私はやって書き換えルールを探しています何

foo 
    '-bar1 
    '-bar2 
    '-bar2.html 
    '-shared 
    '-shared.html 

がexample.com/foo/bar2/bar2を提供することです通常どおり.html。 example.com/foo/bar1/bar1.htmlを/foo/shared/shared.htmlとして、noにはexample.com/foo/bar3/bar3.htmlを表示します。

要約します。私はRewriteCondを開発しようとしていますが、RewriteCondはディレクトリが存在していてもそのディレクトリにファイルが存在しない場合にのみヒットします。

問題:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

は、それが/ fooの/ BAR3ディレクトリが存在しないにもかかわらず、www.example.com/bar3/bar3.html書き換えるということです。

ありがとうございました!

答えて

2

これらのルールは、ジョブを実行する必要があります。意図

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}/$1/ -d 
RewriteRule ^(.+)/([^/]+)$ /foo/shared/shared.html [L,QSA] 
  1. これらのルールは、ルートフォルダにの.htaccessファイルに配置されます。設定ファイル(例:httpd-vhost.conf)に配置する必要がある場合は、少し修正する必要があります(2番目のRewriteCondでスラッシュを削除するか、RewriteRuleにスラッシュを追加する - 実際にはテストが必要です)。 ( - 要求されたと明らかに)要求されたリソースは、少なくとも1つのフォルダを持っている場合

  2. これらのルールのみ動作します。

+0

素晴らしいです!完璧に働いてくれてありがとう! – RHollister

関連する問題