回答:
名前が一致しない場合、Apacheは最初の仮想ホストを使用します。新しい仮想ホストをランダムな名前で最初の仮想ホストとして設定し、好きなものを表示するか、404ページを返します。
ports.conf
。仮想ホストで<ip>:80を使用しているときに*:80に一致させようとしたため、機能していませんでした。代わりに、IPごとに個別のデフォルトエントリを作成する必要がありましたが、現在は機能しています。
ワイルドカードには、サイト構成ファイルが含まれます。
Include path/to/site/confs/*httpd.conf
サイトのconfファイルを整理して、予想される順序でロードされるようにします。例...
01-httpd.conf
02-site1-httpd.conf
03-site2-httpd.conf
等...
Apacheはこれらを順番に読み取ります。次に、常に最後にロードするものを作成して、一致しない仮想ホストをキャッチし、デフォルトのサイトをロードする代わりに404を返します。
99-catchall-httpd.conf
<VirtualHost *:8080>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
<VirtualHost *:8443>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
httpdがリッスンするポートにポートを置き換えてください。または、特定のインターフェイスでリッスンするhttpdがある場合は、代わりに各インターフェイスにキャッチオールを追加する必要があります。
<VirtualHost 192.168.1.101:8080>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
<VirtualHost 192.168.1.101:8443>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
<VirtualHost 192.168.1.102:8080>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
<VirtualHost 192.168.1.102:8443>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
お役に立てれば。このメソッドを使用して、指定した順序でサイトをロードし、不一致の仮想ホストが予期しないサイトを意図せずにロードしないようにします。
前述のようにMoritz Both
、Apache2は、要求されたものと一致しない場合、最初に検出した仮想ホストを使用します。
Apache2を初めてインストールするとき、テンプレートとして使用、変更、削除できるデフォルトのWebサイトconfがあり、000-default.confにはdefault.confもあるので、実際に何のためにあるのかといつも思っていました。Moritz Both
言ったことを読んだ後、今ではすべてがより理にかなっています。
サーバーに対して行ったのは、デフォルトのホスト名(ウェブサイト)の設定を000-default.confファイルとにコピーすることでしたa2ensite 000-default
。
今、私のウェブサイトへの一致しないドメイン要求があるたびに、それは私の実際のデフォルトページのコピーである000デフォルトページを提供します。
<VirtualHost *:443> ... Redirect / https://baseurl/ ... </VirtualHost>
いますが、URLは変わりません。非SSLバージョンでも同じことをしましたが、正しくリダイレクトされます。何か案は?