0

Apache2 のドキュメントでは、特定のホスト要求を送信するディレクトリを指定するための最後の手段として mod_rewrite を推奨しています。彼らは、mod_vhosts_alias を使用すると言いました。私はそれを設定し、問題なく動作しています。ただし、いくつかの mod_rewriting を必要とする特定のケースがあります。

mydomain.com のようなドメインと、sub.mydomain.com や sub2.mydomain.com のような多数のサブネームがあります。これらのサブドメインはすべて、対応するディレクトリにマップされます。ただし、サブドメインには、それぞれのディレクトリにマップされる完全なトップレベル ドメインもあります。例えば:

sub.mydomain.com は awesomeproducts.com と同じディレクトリにマップされます sub2.mydomain.com は widget.com と同じディレクトリにマップされます

各サイトにアクセスするこれらの両方の方法が競合せずに機能することを確認するには、どうすればよいでしょうか?

ドキュメントには、mod_rewrite は mod_vhosts_alias ほど「優雅」ではないとしか書かれていないため、自分の状況で mod_rewrite を完全に単独で使用する必要があるのか​​、それとも 2 つのアプローチを何らかの形で組み合わせて使用​​する必要があるのか​​がわかりませんでした。

それらを混合することで問題が発生しますか?

4

1 に答える 1

1

mod_vhost_alias を使用すると、RewriteRule と RewriteCond の動作が変わります。いじってから数日経っているので大雑把ですが、RewriteRule が URL の書き換え部分を解釈する方法に注意してください。mod_vhost_alias... を使用すると変更される可能性があり、RewriteCond の動作も変更される可能性があります。

私が求めていた質問を達成するために、実際のドメインのシンボリック リンクを使用することになりました。sub1.stddomain.com が sub1.stdomain.com フォルダーに移動するように、フォルダーが関連付けられた一連のサブドメインをセットアップしました。次に、domain1.com を sub1.stddomain.com フォルダーにマップするシンボリック リンクを追加しました。そうすれば、domain1.com にアクセスするすべてのユーザーに、sub1.stddomain.com フォルダー内のサイトが表示されます。

重要: すべての作業とテストの後、mod_vhost_alias を使用しない仮想ホスト ファイルのコレクションに戻りました。mod_vhost_alias には既知の問題があることが判明しました。使用時に DocumentRoot が正しく設定されていません。これにより、大量のスクリプトが壊れます。2012 年 2 月に新しい特殊変数でパッチが適用され、Apache のプログラミング チームがボールを落としました。彼らは、パッチや新しい変数の使い方を説明するドキュメントをまったく書きませんでした。

私は問題を再開し、コードを書くことができず、それを使用する方法を誰にも教えず、修正したと呼ぶことができないため、それはまだバグであると述べました. 残念ながら、この問題はすでに YEARS の間無視されており、コードを書いたと思われるにもかかわらず、おそらく無視され続けるでしょう。

これらすべてからの推奨される教訓: mod_vhost_alias を使用しないでください。もう 1 つのテンプレート ファイルを使用して、仮想ホスト ファイルを管理するシェル スクリプトを記述します。

于 2012-12-26T07:53:08.300 に答える