あなたが探しているのはRewriteCond
、条件付きで書き換えルールを適用できる、だと思います。これは何かがディレクトリであるかどうかをチェックします:
RewriteCond %{REQUEST_FILENAME} -d
次のように、上に配置して使用しますRewriteRule
。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule /([^/]+) processDir.php?dir=$1 [B,QSA]
これは、質問のメソッドまたは回答のいずれかで機能します。注意すべき重要な点は-d
、ルールを適用する前に、フラグが最初にリクエストが有効なディレクトリであることを確認することです。これは、あなたが望んでいるように見えます。
私が収集したものからのあなたの質問の2番目の部分は、ネストされたディレクトリについてです。正規表現は、現状では、具体的に1つのディレクトリのみを検索しています(スラッシュはありません)。これを変更したい場合は、次のようにすることができます。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule /?some_dir/(.*) processDir.php?dir=$1 [B,QSA]
これにより、以下の有効なディレクトリが取得some_dir
され、phpファイルにフィードされます。
.htaccess
最後に注意すべきことは、これらすべてをルートファイルに入れる必要はないということです。.htaccess
書き換えたいディレクトリにファイルを置くことができます。これをどちらの方法でも行うことに大きな違いはありませんが、何をしているのかわからない場合は、構文を少し単純化できることがわかりました。