我在一个只拥有 monsite.fr
SSL 证书的网站上工作。我正在尝试删除 www。并重定向到 https://monsite.fr
。
如果用户键入 www.monsite.fr
,则重定向不起作用,他将不会被重定向到 https://monsite.fr
,而是重定向到 https://www.monsite.fr
并得到认证错误 NET::ERR_CERT_COMMON_NAME_INVALID
。
这是 mysite.conf 文件的内容:
<IfVersion < 2.3 >
NameVirtualHost *:80
NameVirtualHost *:443
</IfVersion>
<VirtualHost *:80>
ServerName monsite.fr
Redirect / https://monsite.fr/
#RewriteEngine On
#RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
#RewriteRule ^(.*)$ https://%1$1 [R=permanent,L]
</VirtualHost>
<VirtualHost *:80>
ServerName www.monsite.fr
Redirect / https://monsite.fr/
</VirtualHost>
<VirtualHost *:443>
ServerName monsite.fr
ServerAlias www.monsite.fr
#RewriteEngine On
#RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
#RewriteRule ^(.*)$ https://%1$1 [R=permanent,L]
RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ https://monsite.fr/$1 [R,QSA,L]
DocumentRoot "/opt/monsite.fr/htdocs"
</VirtualHost>
是否有将 www.monsite.fr
重定向到 https://monsite.fr
的解决方案?
最佳答案
如下修改您的虚拟主机配置:
<VirtualHost *:80>
ServerName www.monsite.fr
ServerAlias monsite.fr
RedirectMatch ^/(.*)$ https://monsite.fr/$1
</VirtualHost>
<VirtualHost *:443>
ServerName www.monsite.fr
RedirectMatch ^/(.*)$ https://monsite.fr/$1
</VirtualHost>
<VirtualHost *:443>
ServerName monsite.fr
SSLEngine On
SSLCertificateFile /path_to_cert/server.crt
SSLCertificateKeyFile /path_to_key/server.key
DocumentRoot "/opt/monsite.fr/htdocs"
</VirtualHost>
第一个虚拟主机 block 将重定向所有来自 http://www.monsite.fr 的请求至 https://monsite.fr .它还将重定向来自 http://monsite.fr 的所有请求至 https://monsite.fr
第二个虚拟主机 block 将重定向所有来自 https://www.monsite.fr 的请求至 https://monsite.fr .
第三个虚拟主机 block 将为 https://monsite.fr 提供内容.确保编辑上述配置并为 SSL 证书添加正确的路径 /path_to_cert/server.crt
和为私钥添加 /path_to_key/server.key
。
关于Apache VirtualHost : strip www. 并强制 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37112302/