假设我在 Apache2 中有以下 Vhost 定义
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName dummy.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/dummy
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias www.dummy.com
SSLCertificateFile /etc/letsencrypt/live/dummy.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/dummy.com/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:80>
ServerName dummy.com
ServerAlias www.dummy.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/dummy
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
Redirect permanent / https://www.dummy.com
</VirtualHost>
</IfModule>
如果我输入
它重定向到
但是如果我输入
http://www.dummy.com或只是 www.dummy.com
它重定向到
这不是一个有效的网址。
虚拟主机配置中的什么导致了这种情况?由于虚拟主机不包含此重写规则,我看不到应该在哪里调试和解决问题
该
Redirect
指令必须是:/
。修改配置文件然后重新启动 Apache2 或只是重新加载其配置。然后刷新浏览器的缓存或使用新的隐身窗口进行测试。
另外你不需要
RewriteEngine on
为了使用Redirect
指令(它不是重写规则)。这是一个类似的问答:设置 SSL 后重定向人员