已有SSL证书,如何配置TYPO3同时支持HTTP与HTTPS访问?
TYPO3同时兼容HTTP和HTTPS的解决方案
一、检查Apache配置
- 确认Apache同时监听80(HTTP)和443(HTTPS)端口,配置文件中需包含:
Listen 80 Listen 443 - 为两种协议分别配置虚拟主机,确保HTTPS虚拟主机正确加载Let's Encrypt证书:
<VirtualHost *:80> ServerName yourdomain.com DocumentRoot /path/to/your/site # 无需强制跳转,保留默认访问逻辑 </VirtualHost> <VirtualHost *:443> ServerName yourdomain.com DocumentRoot /path/to/your/site SSLEngine on SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem </VirtualHost> - 启用
mod_ssl和mod_rewrite模块,执行命令:a2enmod ssl rewrite systemctl restart apache2
二、调整TYPO3系统配置
- 修改
typo3conf/LocalConfiguration.php,设置适配双协议的参数:// 信任当前域名,避免主机头限制 $GLOBALS['TYPO3_CONF_VARS']['SYS']['trustedHostsPattern'] = 'yourdomain\.com'; // 允许HTTP下使用cookie(若仅需HTTPS可用则设为true) $GLOBALS['TYPO3_CONF_VARS']['SYS']['cookieSecure'] = false; // 关闭强制HTTPS的安全头部 $GLOBALS['TYPO3_CONF_VARS']['FE']['secureHeaders'] = []; // 取消页面不存在时的强制跳转规则 $GLOBALS['TYPO3_CONF_VARS']['FE']['pageNotFound_handling'] = ''; - 进入TYPO3后台「站点管理」,编辑目标站点:
- 不要勾选「强制HTTPS」选项
- 将站点基础URL设置为协议相对格式(如
//yourdomain.com/),或留空让系统自动适配当前访问协议 - 确认
config.absRefPrefix配置为/或空值,避免硬编码HTTP/HTTPS前缀
三、清除缓存
- 在TYPO3后台点击「清除全部缓存」,包括页面缓存、配置缓存和自动加载缓存
- 清除浏览器本地缓存,避免旧的跳转规则或页面缓存干扰
四、排查强制跳转规则
- 检查站点根目录的
.htaccess文件,若存在如下强制跳转HTTPS的规则,需注释或删除:# RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] - 确认Let's Encrypt的certbot工具未自动添加全局强制跳转规则,可检查Apache的
le-ssl.conf等相关配置文件
内容的提问来源于stack exchange,提问作者averlon
相关产品推荐
相关产品推荐

