我具有以下.htaccess:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.old_domain.de$
RewriteRule (.*) https://new_domain.de/$1 [R=301,L]
问题是,该规则似乎只能正确重定向www.old_domain.de或http://www.old_domain.de,而不能重定向https://old_domain.de或old_domain.de(跳转至https:// automatically)。在第二种情况下,我收到以下错误:
SSL_ERROR_UNRECOGNIZED_NAME_ALERT
我已经尝试将https://和非www域重写为http://www。但无法以某种方式获得想要的结果。可能我想念一些重要的东西。
在我的新域的.htaccess中,https://强制可能有问题吗?
答案 0 :(得分:1)
要重定向http://www.old_domain.de或www.old_domain.de或http://old_domain.de或old_domain.de,请使用以下代码
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?old_domain\.de$ [NC]
RewriteRule (.*) https://new_domain.de/$1 [R=301,L]
您的代码缺少RewriteCond中的(www\.)?
,无论重写是否包含www,它都将使重写工作正常。
您可以在link上使用htaccess测试器对它进行测试
类似地,您应该为 SSL(HTTPS)配置一个单独的虚拟主机。在该虚拟主机中,您还需要复制上面的代码。
在端口443上将SSL配置为侦听,因此请在htaccess中搜索类似于以下代码的内容
<VirtualHost *:443>
ServerName www.old_domain.de
ServerAlias old_domain.de
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/example/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/example/apache.key
</VirtualHost>
如果仍然找不到在443上配置了虚拟主机侦听功能的文件,则可以使用 -S标志运行apache,如下命令
httpd -S or apachectl -S
这将为您提供文件的名称,在该文件中,虚拟主机在443上的侦听配置如下所示:
*:80 default server xxx.xxx.xxx.xxx (/etc/httpd/conf.d/eco.conf:1)
port 80 namevhost xxx.xxx.xxx.xxx (/etc/httpd/conf.d/eco.conf:1)
*:443 default server xxx.xxx.xxx.xxx (/etc/httpd/conf.d/ssl.conf:1)
port 443 namevhost xxx.xxx.xxx.xxx (/etc/httpd/conf.d/ssl.conf:1)
例如/etc/httpd/conf.d/ssl.conf
是在其中配置了侦听443的虚拟主机的文件。