すべての要求パスを初期化ファイルに書き換えようとしています。これと同じように:除き特定のルールが一致した後にApacheリライトエンジンを終了する
RewriteRule .* framework/init.php
、この枠組みの中のファイルはPHPによって処理される要求をせずに提供することができる、そこからいくつかのディレクトリがあります。しかし、これらのディレクトリへの実際のパスを使用したくないのは、私はこれらのパスをPHPルータが解釈できるようにしたいからです。 したがって、私はこれらのディレクトリの別名を持っていたいと思います。例:
これらの書き換えルールはどちらも個別に動作するのが問題ですが、それらを組み合わせようとすると問題が発生します。エイリアスの書き換えが発生した後で、.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つRewriteRulesのいずれかを取り外す際に作業を開始すること。私は同様の質問を探しましたが、それらはすべて私が適用しようとした解決策を持っています。彼らの質問と私の違いの1つは、 "特別な"ディレクトリを、通常要求されたときにinit.phpに書き換えるディレクトリに書き換えたいということです。誰もがこれがすべて可能であるかどうか私に教えてもらえますか?
フレームワークの下で/ init.phpとinit.phpを経由する他のすべてのリクエストに書き直してはいけないことは何ですか? – sfaiz
いいえ特定の方法で/ i/[something]へのリクエストを特定のフォルダに書きたい、そして/framework/init.phpに対する他のすべてのリクエストを書きたいと思います。/i /要求を書き換えようとしているフォルダは通常は要求できないものです。通常の要求はinit.phpに書き換えられます。 – Avaq