ローカルのApache構成を次のようにセットアップしようとしています。
http://localhost/
は~/
を提供する必要があります
http://development.somedomain.co.nz/
は~/sites/development.somedomain.co.nz/
を提供する必要があります
https://development.assldomain.co.nz/
は~/sites/development.assldomain.co.nz/
を提供する必要があります
ローカルネットワーク(192.168.1。*の範囲)と自分自身(127.0.0.1)からの接続のみを許可したい。
私はhostsファイルを次のように設定しました:
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
127.0.0.1 development.somedomain.co.nz
127.0.0.1 development.assldomain.co.nz
127.0.0.1 development.anunuseddomain.co.nz
私のApache構成は次のようになります。
Listen 80
NameVirtualHost *:80
<VirtualHost development.somedomain.co.nz:80>
ServerName development.somedomain.co.nz
DocumentRoot "~/sites/development.somedomain.co.nz"
DirectoryIndex index.php
<Directory ~/sites/development.somedomain.co.nz>
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost localhost:80>
DocumentRoot "~/"
ServerName localhost
<Directory "~/">
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<IfModule mod_ssl.c>
Listen *:443
NameVirtualHost *:443
AcceptMutex flock
<VirtualHost development.assldomain.co.nz:443>
ServerName development.assldomain.co.nz
DocumentRoot "~/sites/development.assldomain.co.nz"
DirectoryIndex index.php
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /Applications/XAMPP/etc/ssl.crt/server.crt
SSLCertificateKeyFile /Applications/XAMPP/etc/ssl.key/server.key
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
<Directory ~/sites/development.assldomain.co.nz>
SSLRequireSSL
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
</IfModule>
http://development.somedomain.co.nz/
http://localhost/
およびhttps://development.assldomain.co.nz/
は正常に機能します。
問題は、http://development.anunuseddomain.co.nz/
またはhttp://development.assldomain.co.nz/
を要求すると、http://development.somedomain.co.nz/
と同じように応答することです。
仮想ホストサーバー名と一致しないすべてのリクエストと、httpでリクエストされたhttpsホストへのすべてのリクエストを拒否したい
PS Mac OS X10.5.8でXAMPPを実行しています
Apacheがmactchvhostをカントできない場合、デフォルトのものを開きます。デフォルトは常にあります。明示的に定義されていない場合は、構成ファイルの最初の仮想ホスト定義です。
Httpd -Sを使用して、デフォルトのvhostを確認できます。
また、デフォルトを定義して、必要に応じてアクセスを禁止することができます。
名前付き仮想ホスティングは、SSLベースの仮想ホストではサポートされていません。
この問題は、ServerNameもSSL要求で暗号化されているという事実に起因しています。したがって、サーバーが「somedomainname」などの要求を受信すると、デフォルトで、443でis n'tという名前付きVHostになります。
解決:
修正済み:
# Listen :80
Listen *:80
# Listen on IP Address for :443
Listen 127.0.0.1:443
<VirtualHost development.somedomain.co.nz:80>
ServerName development.somedomain.co.nz
DocumentRoot "~/sites/development.somedomain.co.nz"
DirectoryIndex index.php
# Stay consistent with your syntax definitions. This and the 443 Vhost Directory
# were not Quoted. That's not to say it makes a difference guaranteed,
# but it's always a good habit.
<Directory "~/sites/development.somedomain.co.nz">
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost localhost:80>
ServerName localhost
DocumentRoot "~/"
<Directory "~/">
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<IfModule mod_ssl.c>
# Does this need to exist outside of the VHost Definition ??
AcceptMutex flock
<VirtualHost 127.0.0.1:443>
ServerName development.assldomain.co.nz
DocumentRoot "~/sites/development.assldomain.co.nz"
DirectoryIndex index.php
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /Applications/XAMPP/etc/ssl.crt/server.crt
SSLCertificateKeyFile /Applications/XAMPP/etc/ssl.key/server.key
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
<Directory "~/sites/development.assldomain.co.nz">
SSLRequireSSL
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
</IfModule>
ファイルの最後にデフォルトのVirtualHostを追加して、明示的に指定しなかったホストに向けられたリクエストをキャッチします。
<VirtualHost _default_:*>
DocumentRoot /~/void
...
</VirtualHost>
あなたの仮想のホストディレクティブで:
<VirtualHost localhost:80>
代わりにIPを使用してみてください。
<VirtualHost 127.0.0.1:80>