HTTP到https重定向不起作用(Letsencrypt)

时间:2019-02-11 15:43:12

标签: apache redirect https

我浏览了网络上所有类似的主题,但似乎找不到解决方法。

我已经成功安装了Let's Encrypt证书,但是无法从http自动重定向正常工作。重定向是通过certbot(Letsencrypt安装脚本)通过/etc/apache2/sites-available/domain.com.conf文件设置的。这是文件的内容:

<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
ServerAdmin webmaster@localhost
DocumentRoot /home/username/public_html/domain.com/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.domain.com [OR]
RewriteCond %{SERVER_NAME} =domain.com
RewriteCond %{THE_REQUEST} !/(robots.txt|sitemap.xml)\s [NC]
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

文件已正确链接到其启用站点的符号链接。我尝试重新加载/重新启动apache2服务,尝试禁用此网站的本地.htaccess文件,但无济于事。我扫描了所有.conf文件,并确保在任何其他.conf文件中均未提及此域。奇怪的是,重定向确实对我位于同一服务器上的某些网站有效,但对某些网站却无效。

我尝试通过日志文件进行查找,但未发现任何特定内容。

请帮助!

1 个答案:

答案 0 :(得分:0)

找到了。

原因是我从其他服务器上移走了某些域,所以我从那里复制了所有.conf文件。因为IP不同,所以我不得不重新发行并重新安装证书。由于某些扭曲的原因,Certbot在每个* -le-ssl.conf中创建了一个<VirtualHost *:80>部分,但注释掉了redirect部分。因此,实际上是使用 domain.com-le-ssl.conf 文件代替了 domain.com.conf 文件进行端口80连接。

解决方案是取消注释* -le-ssl.conf文件的重定向部分,或从其中完全删除<VirtualHost *:80>部分,以允许* .conf文件接管。