VPS环境下如何将80端口请求重定向至443,仅启用HTTPS连接?
解决Apache HTTP自动跳转HTTPS的问题
你之前删掉80端口的VirtualHost后,访问http://my.domain会显示默认页,是因为Apache找不到对应域名的80端口配置,就自动用了默认的站点配置。要实现HTTP强制跳转到HTTPS,正确的做法是保留/新建80端口的VirtualHost专门做重定向,而非删掉它。
下面给两种可行的配置方式:
方法一:用简单的Redirect指令
在/etc/apache2/sites-available/myconf.conf里添加80端口的配置块:
<VirtualHost *:80> ServerName my.domain # 把所有HTTP请求永久重定向到HTTPS Redirect permanent / https://my.domain/ </VirtualHost> # 保留你原来的443端口配置 <VirtualHost *:443> ServerName my.domain # 这里放你的SSL配置(SSLCertificateFile、SSLCertificateKeyFile等) # 还有你的代理配置(ProxyPass、ProxyPassReverse等) </VirtualHost>
方法二:用mod_rewrite实现更灵活的跳转
如果需要保留原请求的路径和参数,可使用rewrite模块:
首先确保rewrite模块已启用:
sudo a2enmod rewrite
然后修改80端口的VirtualHost:
<VirtualHost *:80> ServerName my.domain RewriteEngine On # 强制跳转到HTTPS,保留原请求的路径和参数 RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L] </VirtualHost>
最后生效配置
完成配置后,启用站点(未启用的话)并重启Apache:
sudo a2ensite myconf.conf sudo systemctl restart apache2
这样设置后,用户访问http://my.domain就会自动跳转到https://my.domain,也不会再出现默认页面了。
内容的提问来源于stack exchange,提问作者Wiggle
相关产品推荐
相关产品推荐

