所以我有一个配置文件说明了这个
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName www.aaaaaaaa.yyyyyyyyy.co.uk
ServerAlias aaaaaaa.yyyyyyy.co.uk
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.aaaaaaa.yyyyyyyyy.co.uk [OR]
RewriteCond %{SERVER_NAME} =aaaaaa.yyyyyyyyy.co.uk
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName www.xxxxxx.yyyyyyyy.co.uk
ServerAlias xxxxxxx.yyyyyyyyy.co.uk
ProxyPass / http://localhost:8989/
ProxyPassReverse / http://localhost:8989/
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.xxxxxxxxxxx.yyyyyyyy.co.uk [OR]
RewriteCond %{SERVER_NAME} =xxxxxx.yyyyyyyyyy.co.uk
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
访问aaaaaaa.yyyyyyyyy.co.uk时,它会重定向到https,这是desiered效果并启动正确的应用程序。
然而,当我访问xxxxx.yyyyyyy.co.uk时,它显示正确的应用程序,但不会重定向到https,当我实际键入https://xxxx.yyyyyy.co.uk时,它会将我重定向到与aaaaaaa.yyyyyyyyyy.co.uk相同的应用程序
我怎样才能做到这一点!
答案 0 :(得分:0)
这里的主要问题是certbot dosn在1个文件中与多个主机配合使用。
纠正问题的步骤;
1删除所有证书
2在site-availible中重新创建自己文件中的所有虚拟主机 (减去重写部分)
一个conf文件的示例内容
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName www.aaaaaaaa.yyyyyyyyy.co.uk
ServerAlias aaaaaaa.yyyyyyy.co.uk
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
</VirtualHost>
对所有虚拟主机(站点)执行此操作后,3运行命令
certbot --apache
并为所有人创建新证书,确保在最后选择重定向功能。
工作得很好!