2

我最近将我的网站从一个 VPS 移动到另一个 VPS。除了 ssl 的一个问题外,一切都做得很好并且工作正常。

我的网站使用 ssl。(使用rapidssl证书)

我按照此处的说明将证书从一台服务器移动到另一台服务器。 http://www.sslshopper.com/apache-server-ssl-installation-instructions.html

我面临的问题对我来说很奇怪。在 HTTPS 模式下,我的网站可以正常使用类似 url http://stackoverflow.comhttps://stackoverflow.com但它不适用于https://www.stackoverflow.com(注意 www)。

这个问题对我来说很奇怪,因为它确实适用于旧服务器。

提前致谢。普拉斯

这是我的虚拟主机

<VirtualHost *:80>
ServerAdmin webmaster@@localhost
DocumentRoot /var/www/webroot/
ServerName stackoverflow.com
ServerAlias www.stackoverflow.com
<Directory //var/www/webroot/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost ***.***.***.***:443>
    ServerAdmin webmaster@localhost
    ServerName stackoverflow.com
    ServerAlias www.stackoverflow.com

    DocumentRoot /var/www/webroot/
    <Directory /var/www/webroot/>
            Options -Indexes
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>
    SSLEngine on
    SSLCertificateFile    /etc/apache2/ssl/thirdparty.crt
    SSLCertificateKeyFile /etc/apache2/ssl/thirdparty.key
    SSLCACertificateFile  /etc/apache2/ssl/thirdpartyssl.ca
    BrowserMatch "MSIE [2-6]" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
4

1 回答 1

0

我找到了解决方案。

首先,有问题的 url 模式也不能在旧服务器上运行。这已得到证书人员的证实。

因此,我决定将所有“https://www.stackoverflow.com”url 请求转发到https://stackoverflow.com。为此,我添加了一些 .htaccess 规则:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

这些规则是通用的,适用于所有网站。

希望这将节省其他人的时间。

于 2012-11-28T12:02:10.153 回答