我有一个带有一个站点的服务器,我通过该站点重定向到 https
<虚拟主机 *:80> DocumentRoot /var/www/html/secure 服务器名称 secure.com 重定向 / https://secure.com </虚拟主机>
那样没问题。
现在我正尝试添加另一个不安全的网站
<虚拟主机 *:80> DocumentRoot /var/www/html/notsecure 服务器名称 notsecure.com </虚拟主机>
当然,因为重定向是在“/”,所以所有网站都会被重定向。我尝试将重定向更改为完整的文档根目录,但没有成功。
答案1
如果您启用了 NameVirtualHost,则必须使用 IP。如果您正在运行 SSL,或者在不同的 IP 地址上运行 VirtualHosts,则需要 NameVirtualHost。
<VirtualHost 172.16.4.1:80>
DocumentRoot /var/www/html/secure
ServerName secure.com
Redirect / https://secure.com
</VirtualHost>
<VirtualHost 17.16.4.1:80>
DocumentRoot /var/www/html/notsecure
ServerName notsecure.com
</VirtualHost>
答案2
嗯,你需要声明这一点(最好在 httpd.conf/apache2.conf 中),这很重要!不要使用星号“*”
NameVirtualHost IP_or_hostname:80
NameVirtualHost IP_or_hostname:443
在您的虚拟主机中:
<VirtualHost IP_or_hostname:443>
ServerName whateveryouwant
DocumentRoot /www/blahblah/
SSLEngine on
SSLCertificateKeyFile /etc/apache2/ssl/blahblah.key
SSLCertificateFile /etc/apache2/ssl/blahblah.crt
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
ErrorLog /var/log/apache2/error.log
</VirtualHost>
<VirtualHost IP_or_hostname:80>
ServerName whateveryouwant
DocumentRoot /www/blahblah
ErrorLog /var/log/apache2/error.log
LogLevel warn
ServerSignature Off
RewriteEngine on
RewriteCond %{HTTP_HOST} ^blahblahblah$ [NC]
RewriteRule ^/(.*) https://blahblahblah/$1 [R=301,L]
</VirtualHost>
答案3
使用 mod_rewrite:
你的配置文件看起来应该是这样的:
<VirtualHost *:80>
DocumentRoot /var/www/html/secure
ServerName secure.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}`
</VirtualHost>
答案4
尝试以下配置:
NameVirtualHost *:80
NameVirtualHost *:443
# default virtual host
<VirtualHost *:80>
ServerName _default_
DocumentRoot /var/www/html/default
</VirtualHost>
<VirtualHost *:80>
ServerName secure.com
DocumentRoot /var/www/html/secure
RedirectPermanent / https://secure.com
</VirtualHost>
<VirtualHost *:443>
ServerName secure.com
DocumentRoot /var/www/html/secure
SSLEngine on
# other SSL related directives
</VirtualHost>
<VirtualHost *:80>
ServerName notsecure.com
DocumentRoot /var/www/html/notsecure
</VirtualHost>
你还应该看看VirtualHost 示例在 Apache httpd 文档中。