设置 SSL 后重定向人员

设置 SSL 后重定向人员

如何使用 apache2 设置自动重定向。我已经让 SSL 工作,并希望将所有内容重定向到 SSL 端。我添加了重定向 /https://fraffel.tech/但会将我带到错误的站点目录,而 https 会将我带到正确的位置。这是重定向的正确添加内容吗?(它在 VirtualHost *:80 中)

当前 VirtualHost 文件:

ServerName fraffel.tech 

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/fraffeltech
    Redirect / https://fraffel.tech/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<VirtualHost *:443> 
    DocumentRoot /var/www/fraffeltech

    SSLEngine on 
    SSLCertificateFile /etc/ssl/fraffel_tech.crt 
    SSLCertificateKeyFile /etc/ssl/private/fraffel.tech.key 
    SSLCertificateChainFile /etc/ssl/fraffel_tech.ca-bundle 
</VirtualHost>

答案1

这里的问题是标签ServerName中缺少指令<VirtualHost>。这对于识别虚拟主机是必需的。

此外,对于这种情况,最好使用Redirect带有选项的指令permanent- 阅读“重定向方法”部分本文

ServerName example.com # This directive provides a global server name.
                       # But you should set ServerName also for each virtual host
                       # to identify it!!!

<VirtualHost *:80>
    ServerName example.com
    # Redirect Requests to HTTPS with HTTP 301 status
    Redirect permanent "/" "https://example.com/"

    # Other configuration directives...
</VirtualHost>

<VirtualHost _default_:443>
    ServerName example.com

    # Other configuration directives...
</VirtualHost>

应用配置更改并重新启动(或重新加载)Apache。然后刷新浏览器的缓存或使用隐身窗口(或其他浏览器)查看更改。


对于此任务,您还可以使用重写规则,如下图所示这个问题,但在 Apache 文档中,你将被告知当您可以使用更简单的指令时,不要使用重写引擎。

相关内容