0

私は%{HTTP_HOST}自分のファイルでいくつかの基本的な作業を行うつもりで.htaccessあり、これに似たことができるかどうか疑問に思っていました:

RewriteCond %{HTTP_HOST} ((foo|bar|baz).com)$
RewriteCond %{DOCUMENT_ROOT}/apps/%1/webroot%{REQUEST_URI}  -d [OR]
RewriteCond %{DOCUMENT_ROOT}/apps/%1/webroot%{REQUEST_URI}  -f
  RewriteRule %{DOCUMENT_ROOT}/apps/%1/webroot%{REQUEST_URI} [L]

RewriteRule ^(.*)$ index.php?uri=$1 [QSA,L]

基本的に、誰かがfoo.comサブドメインにアクセスした場合、そのフォルダーから直接ファイルを提供したいだけでなく、処理のために私のファイルに送信された特定のファイルではないリクエストも必要ですindex.php(ルーティングを行います)

私が尋ねている理由は、私が上に書いたことは実際にはうまくいかないからです.それを行う方法はありますか? (また、これが機能する必要がある場合、明らかに残りの.htaccessファイルに問題がありますが、1つのアプリケーションフォルダーのみを処理する場合はすべて機能します)

もう1つの(面倒なIMO)方法は、すべてをフォルダーにルーティングし、.htaccessドメインごとに2番目のファイルを作成することですが、1つのファイルで実行できる場合は、これを実行したくありません!

4

1 に答える 1

0

最初の書き換えルールに正規表現がないため、(正規表現として) 一致させようとしている書き換えエンジンが作成され、%{DOCUMENT_ROOT}/apps/%1/webroot%{REQUEST_URI}それを[L]. 私はあなたがそれを次のようにしたいと思っていると思います:

RewriteRule ^ /apps/%1/webroot%{REQUEST_URI} [L]

3 つの^条件でリクエストをすでに精査しているため、 は何にでも一致します。

ここで、最後のルールにいくつかの条件を追加して、やみくもにすべてに適用されないようにする必要があります。おそらく次のようなものが必要です。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?uri=$1 [QSA,L]
于 2012-08-31T15:32:22.090 に答える