私はここで答えを何時間も探していたと約束しますが、それでも機能していません。これが私が持っているものです:
RewriteCond %{HTTP_HOST} ^([^\.]*)\.example\.com [NC]
RewriteCond %{REQUEST_URI} !^/%1/ [NC]
RewriteRule ^(.*)$ /%1/$1 [L]
2行目が正しく一致していないため、これにより無限ループが作成されます。%1
ただし、 2行目でに置き換えてwww
に移動するとwww.example.com
、正常に動作します。明らかに、他のサブドメインでは機能しなくなりましたが、の値がであることがわかっているので、処理www
せずに2行目に明示的に入力した%1
場合は奇妙%1
ですwww
。
私が達成しようとしていることは次のとおりです。私はドメイン「example.com」を持っています。ルートディレクトリには、「dev」、「test」、「www」など、いくつかのサブディレクトリがあります。htaccessファイルの上位に、サブドメインが空(example.com)、w(w.example.com)、またはww(ww.example)の場合に、ドメインを「www.example.com」にリダイレクトするように強制するルールがあります。 .com)、それ以外はそのままにしておきます(dev.example.com、test.example.com)。これで、ファイルのこの部分は、サブドメインに基づいてリクエストを正しいサブディレクトリに書き換えることになっています。したがって、「dev.example.com/something.jpg」のようなリクエストは「dev.example.com/dev/something.jpg」に書き換えられます(リダイレクトされません)。
ここでの計画は、ホームサーバー上に環境を再作成することなく、サーバー上に開発環境とテスト環境を作成できるようにすることです。すべてのサーバー設定が完全に同じであることを確認してください。また、私が望んでいたことは何でもできると思いますが、それは当面の必要性です。