我在服务器上安装了SSL证书,https工作正常。
Http重定向工作正常,例如http://login.example.com
- > https://example1.com/index.html
但是从https重定向无效,例如https://login.example.com
- > https://example1.com/index.html
。
它只是转到我的服务器的主页https://redirect.example.com
有关如何从https重定向到工作的任何建议吗?
谢谢!
<VirtualHost *:80>
RewriteEngine On
ServerName redirect.example.com
RewriteCond %{HTTP_HOST} ^login\.example\.com(.*)
RewriteRule (.*) https://example1.com/index.html [L]
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/httpd/my.crt
SSLCertificateKeyFile /etc/httpd/my.pem
ServerName redirect.mydomain.com
RewriteEngine On
ServerName redirect.example.com
RewriteCond %{HTTP_HOST} ^login\.example\.com(.*)
RewriteRule (.*) https://example1.com/index.html [L]
</VirtualHost>
谢谢!
答案 0 :(得分:1)
我发现您的SSL主机声明中有一个重复的ServerName指令。 这可能会造成麻烦。
如果您使用的是基于名称的虚拟主机,则部分内的ServerName指定必须在请求的Host:标头中显示哪个主机名才能匹配此虚拟主机。
答案 1 :(得分:0)
多少规则究竟是什么意思?多个域名/子域名?
应以这种方式实现http(s):// login.example.com到https://example1.com/index.html的简单重定向:
<VirtualHost *:80>
ServerName login.example.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^login\.example\.com
RewriteRule (.*) https://example1.com/index.html [L]
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/httpd/my.crt
SSLCertificateKeyFile /etc/httpd/my.pem
ServerName login.example.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^login\.example\.com
RewriteRule (.*) https://example1.com/index.html [L]
</VirtualHost>
重要提示:ServerName应与您的SSL证书的公用名匹配(除非它是通配符证书)。
注意:由于Apache mod_alias模块提供的Redirect指令在这里可能就足够了,因此RewriteEngine可能因你的目的而过度。 来自Apache文档:When not to use mod_rewrite
答案 2 :(得分:0)
使用重写规则的服务器别名:
ServerAlias login.example.com
您可以将多个ServerAlias
用于多个Rewrite Rule