Apache 仮想ホストとデフォルト サーバーが期待どおりに動作しない (間違ったコンテンツを提供する)

StackOverflow https://stackoverflow.com/questions/2392821

質問

私はこれを数時間試してきましたが、誰かに尋ねることがおそらく最善の方法であるという結論に達しました。

私はすぐに使用できる Apache をインストールしているので (mod_security と mod_python を追加しました)、/etc/httpd/conf/httpd.conf には触れていません。

多数のドメインがあり、すべて として実行されており、それぞれに独自の構成ファイルがあります。認識されないホスト名が最初の仮想ホストからのコンテンツを提供するという事実を除いて、それらはすべて期待どおりに動作しています(最初の仮想ホストからのコンテンツが提供されるため、これは予期される動作であると私は知っています)。

誰かが不明なホスト名を介してサーバーにアクセスした場合に提供されるデフォルトのコンテンツセットを設定したいのですが、そうすると、最初のサイトでもこのデフォルトのコンテンツが提供されることになりますが、これには理由が見つからないようです。

個々のサイトのすべての設定ファイルは /etc/httpd/conf.d/sites にあり (自動インクルードされないように)、ファイル (/etc/httpd/conf.d/sites) を通じてインクルードされます。 .conf) を作成しました。デフォルトのサーバーをセットアップする前に、その内容は次のとおりです。

Include conf.d/sites/*.conf

デフォルトのサーバーを動作させるために、これを次のように変更しました。

<VirtualHost _default_:80>
        DocumentRoot /home/sites/DEFAULT
        <Directory "/home/sites/DEFAULT">
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>
Include conf.d/sites/*.conf

問題をもう一度繰り返します。 sites.conf の 2 番目のバージョンがアクティブな場合、最初の VirtualHost もこのコンテンツを提供します。残りは大丈夫です。すべてのサイトの構成ファイルは構文的に正しく、ServerName にタイプミスはありません。

(参考までに、問題のあるサイトの構成ファイルを含めました - /etc/httpd/conf.d/sites/DOMAIN.clintonmontague.co.uk.conf に保存されています)

<VirtualHost *:80>
        DocumentRoot /home/sites/clintonmontague.co.uk/www
        ServerName clintonmontague.co.uk
        LogLevel emerg
        CustomLog /home/sites/clintonmontague.co.uk/_logs/access_log "combined"
        <Directory "/home/sites/clintonmontague.co.uk/www">
                AllowOverride none
                allow from all
                Options +Indexes
        </Directory>
</VirtualHost>

長すぎる質問ですみません!

他の情報:Apache 2.2、CentOS 5、MediaTemple (dv)

役に立ちましたか?

解決 2

参考までに - /etc/sysconfig/network が私の HOSTNAME を clintonmontague.co.uk (たまたまアルファベット順で最初のドメインでした) として報告したために問題が発生したようです。したがって、 デフォルト そのドメイン名が含まれていたため、デフォルトのコンテンツが提供されていました。

誰かが同様の問題を抱えている場合に備えて、回答を投稿しようと思いました:)

MediaTemple でこれを変更することはできません ((dv) が再起動されるたびに、この値はリセットされます)

デフォルトコンテンツのindex.phpにこの行を含めることで修正しました。

<?php
if ($_SERVER['SERVER_NAME'] == 'clintonmontague.co.uk' )
{
    header ('Location: http://www.clintonmontague.co.uk/');
}
?>

他のヒント

あなたがあなたの答えに言うことは正しい場合は、

、その後、これを試してみてください。 PHPコードの代わりに動作するはずServerAliasラインに注意してください。

<VirtualHost *:80>
        DocumentRoot /home/sites/clintonmontague.co.uk/www
        ServerName clintonmontague.co.uk
        ServerAlias www.clintonmontague.co.uk 
        LogLevel emerg
        CustomLog /home/sites/clintonmontague.co.uk/_logs/access_log "combined"
        <Directory "/home/sites/clintonmontague.co.uk/www">
                AllowOverride none
                allow from all
                Options +Indexes
        </Directory>
</VirtualHost>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top