如何仅在子域上保持SSL访问

我有一个Apache2configuration

<VirtualHost *:80> ServerName y.com </VirtualHost> 

和子域

 <VirtualHost *:443> ServerName xycom </VirtualHost> 

目标是使https:// xycom只能通过SSL访问。 但是,当我input任何其他子域名,例如https://any.y.com我看到相同的页面为https:// xycom

如何禁用像https://any.y.com这样的任何url,以https:// xycom显示相同的网页。 我希望这样的网站根本不应该被访问。

您必须在端口443上为xycom设置一个虚拟主机,而在端口80上只设置y.com。

 Namevirtualhost *:80 Namevirtualhost *443 <VirtualHost *:443> SSLEngine on SSLCertificateFile "conf/ssl.crt/certificate.crt" SSLCertificateKeyFile "conf/ssl.key/certificate.key" SSLCertificateChainFile "conf/ssl.crt/chain-file.ca-bundle" ServerAdmin [email protected] DocumentRoot "C:/apache/htsecure/" ServerName secure.u4ik.us ServerAlias secure.u4ik.us </VirtualHost> <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "C:/apache/htdocs/" ServerName u4ik.us ServerAlias www.u4ik.us </VirtualHost> 

注意两个不同的文档根。 另外请注意,他们听一个特定的域名。 对于使所有子域转到xycom的其他部分,请使用mod_rewrite:

在.htaccess文件中popup:

 <IfModule mod_rewrite.c> Options +FollowSymLinks Options +Indexes RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !www.domain.com$ [NC] RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com [NC] RewriteRule (.*) %2/$1 [L] </IfModule>