假设我在 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
它会重定向到
这不是一个有效的网址。
vhost 配置中的什么原因导致了这种情况?由于虚拟主机不包含此重写规则,我看不到应该在哪里调试和解决问题
答案1
该Redirect
指令必须是:
Redirect permanent / https://www.dummy.com/
- 注意最后的斜线
/
。
修改配置文件,然后重启 Apache2 或者重新加载配置。然后刷新浏览器缓存或者使用新的隐身窗口进行测试。
此外您不需要RewriteEngine on
为了使用Redirect
指令(它不是重写规则)。
以下是类似的问答:设置 SSL 后重定向人员