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

Jim*_*con 3 apache https redirect

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

我已成功安装 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]
Run Code Online (Sandbox Code Playgroud)

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

我试过查看日志文件,但没有找到任何具体内容。

请帮忙!

Jim*_*con 6

找到了。

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

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