Apache2 vhost 上未定义无效重定向

Apache2 vhost 上未定义无效重定向

假设我在 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://dummy.com

它会重定向到

https://www.dummy.com

但如果我输入

http://www.dummy.com或者直接访问 www.dummy.com

它会重定向到

https://www.dummy.comindex.php/

这不是一个有效的网址。

vhost 配置中的什么原因导致了这种情况?由于虚拟主机不包含此重写规则,我看不到应该在哪里调试和解决问题

答案1

Redirect指令必须是:

Redirect permanent / https://www.dummy.com/
  • 注意最后的斜线/

修改配置文件,然后重启 Apache2 或者重新加载配置。然后刷新浏览器缓存或者使用新的隐身窗口进行测试。

此外您不需要RewriteEngine on为了使用Redirect指令(它不是重写规则)。

以下是类似的问答:设置 SSL 后重定向人员

相关内容