Apache の動的大量仮想ホストでの正規リダイレクト

Apache の動的大量仮想ホストでの正規リダイレクト

ユーザーが自分のドメインをサーバーにポイントできるようにする Web アプリを Apache 上に持っています。

現在、私はApacheの動的マス仮想ホストをVirtualDocumentRoot /www/hosts/%0/docsエントリで使用しています。

したがって、www.companydomain.com は /www/hosts/www.companydomain.com/docs を指します。

問題は、ユーザーがcompanydomain.comにアクセスすると、/www/hosts/companydomain.com/docsがポイントされることです。

Apache に仮想ホストのディレクトリが存在するかどうかを自動的にチェックさせ、存在しない場合はホスト名の前に「www.」が付くようにする簡単な方法はありますか? 他のサブドメインは問題ありません (つまり、abc.domain.com は def.domain.com とは異なるディレクトリを指す必要があります) が、「www」の問題全体が私には謎です。

動的なマス仮想ホストを使用しているため、アプリケーションの登録ごとにサーバーを再起動する必要はありません。別の方法がある場合は、Apache が毎回再起動されない限り問題ありません。

これを実現するにはどうすればよいでしょうか? 最悪のシナリオとして、見つからない場合にサーバー上の「デフォルト」の場所にリダイレクトする方法があれば、PHP などを使用して常にチェックできますが、これは少し不自然な感じがして、より効率的な方法があるはずです。

前もって感謝します!

答え1

RewriteCond のオプションを検討して、この vhost のディレクトリが存在するかどうかをテストし、存在しない場合は www.example.com に明示的にリダイレクトすると思います-d directory。これにより、予期しないページが表示されてもユーザーがショックを受けることがなくなり、検索エンジンによる複数のインデックス作成を防ぐことができます。

答え2

modules/mappers/mod_vhost_alias.c の 458 行目

if (strncasecmp(name,"www.",4) == 0) {
    name+=4;
}

関連情報