すべてのリクエストパスを開始ファイルに書き直そうとしています。そのようです:
RewriteRule .* framework/init.php
ただし、このフレームワーク内には、PHPによる処理を要求せずにファイルを提供できるディレクトリがいくつかあります。ただし、これらのディレクトリへの実際のパスは使用したくありません。これらのパスをPHPルーターで解釈できるようにするためです。したがって、これらのディレクトリのエイリアスが必要です。例えば:
RewriteRule ^i/com/(\w+)/(.*)$ framework/components/$1/images/$2
問題は、これらの書き換えルールの両方が個別に機能することですが、それらを組み合わせようとすると、問題が発生します。エイリアスの書き換えが発生した後、.htaccess全体を再評価しているようです。これが私が試したことのいくつかの例です:
特定の条件下で書き換え-すべての行をスキップする:
rewriteRule ^i - [S=1]
RewriteRule .* framework/init.php
RewriteRule ^i/com/(\w+)/(.*)$ framework/components/$1/images/$2
動作しません。2行目がスキップされたように見え、3行目が2行目がスキップされない状態に書き換えられるため、2行目が実行されます。
排他的な書き換えの使用-すべての行:
RewriteRule (?!i).* framework/init.php
RewriteRule ^i/com/(\w+)/(.*)$ framework/components/$1/images/$2
同じ話。
例外行の後で書き換えエンジンを停止します。
RewriteRule ^i/com/(\w+)/(.*)$ framework/components/$1/images/$2 [L]
RewriteRule .* framework/init.php
動作していません。
書き換え条件の追加:
RewriteCond %{REQUEST_URI} ^(?!i)
RewriteRule .* framework/init.php
RewriteRule ^i/com/(\w+)/(.*)$ framework/components/$1/images/$2
上記の例はすべて、2つのRewriteRuleのいずれかを削除すると機能し始めることに注意してください。私は同様の質問を探しましたが、それらはすべて私が適用しようとした解決策を持っています。彼らの質問と私の質問の違いの1つは、「特別な」ディレクトリを、通常要求されたときにinit.phpに書き換えられるディレクトリに書き直したいということです。誰かがこれが可能かどうか教えてもらえますか?もしそうなら、私が欠けているものや得ていないものは何ですか?