如何停止重定向循环? Ubuntu 上的 Apache2

Posted

技术标签:

【中文标题】如何停止重定向循环? Ubuntu 上的 Apache2【英文标题】:How do I stop a Redirect Loop? Apache2 on Ubuntu 【发布时间】:2021-11-27 04:51:02 【问题描述】:

我有一个 DigitalOcean Ubuntu 20.04 Droplet。从 Namecheap 连接到域和 SSL 证书。一切正常。我正在尝试添加从http://example.com 到https://www.example.com 的重定向。 HTTPS 和万维网。当我尝试我的域时。我收到一条错误消息,提示“重定向过多”。我无法访问该页面。没有阿帕奇。所以我处于重定向循环中。在 www 和非 www 之间。我的 /etc/apache2/sites-enabled/000-default.conf 是:

`<VirtualHost *:80>
      ServerName example.com
      Redirect permanent / https://www.example.com/
 </VirtualHost>
 <VirtualHost *:443>
      ServerName example.com
      Redirect permanent / https://www.example.com/
      DocumentRoot /var/www/html
      SSLEngine on
      SSLCertificateFile /etc/ssl/example_com.crt
      SSLCertificateKeyFile /etc/ssl/example_com.key
      SSLCertificateChainFile /etc/ssl/example_com.ca-bundle
 </VirtualHost>`

那么,如何停止重定向循环?我也有 /etc/apache2/sites-enabled/000-default.conf:30

 `<VirtualHost *:443>
       ServerName example.com
       DocumentRoot /var/www/html
       SSLEngine on
       SSLCertificateFile /etc/ssl/example_com.crt
       SSLCertificateKeyFile /etc/ssl/example_com.key
       SSLCertificateChainFile /etc/ssl/example_com.ca-bundle
  </VirtualHost>`

这看起来正确吗?请看一下。并回复。如何停止重定向。环形。谢谢

【问题讨论】:

【参考方案1】:

调整您的 Vhost 配置:

<VirtualHost *:80>
  ServerName example.com
  ServerAlias www.example.com
  Redirect permanent / https://www.example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com
  DocumentRoot /var/www/html
  SSLEngine on
  SSLCertificateFile /etc/pki/tls/certs/example_com.crt
  SSLCertificateKeyFile /etc/pki/tls/private/example_com.key
  RewriteEngine On
  RewriteCond %HTTP_HOST !^www\. [NC]
  RewriteRule ^(.*)$ https://www.%HTTP_HOST%REQUEST_URI [R=301,L]
</VirtualHost>

得到以下结果:

http://example.com -> https://www.example.com
http://www.example.com -> https://www.example.com
https://example.com -> https://www.example.com
https://www.example.com -> Stays the same

【讨论】:

感谢您的快速回复。我可以将“https://example.com”添加到“https://www.example.com”吗? (不保持不变?) 我尝试了 443 上的评论,它有效。重启阿帕奇。重定向很好。但是我可以将 www 添加到 https 吗?喜欢上面的评论吗?再次感谢 我已经更新了我的答案,不使用 HTTPS Vhost 443 的 www 重定向。 我回来了。我将尝试重写规则和条件。并回来报告。再次感谢 我回来了...对不起,我很忙。我试过你的第二个回复,它不会连接。没有阿帕奇屏幕。在网上。对于我的域。我应该完全输入您发布的内容吗?我应该用“example.com”替换“%HTTP_HOST”之类的东西吗?应该评论 443 的链接吗?重定向443?像以前一样。而且我无法重新启动/启动 Apache。随着新条目。请回复。任何人。谢谢

以上是关于如何停止重定向循环? Ubuntu 上的 Apache2的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress nginx 重定向循环

java执行logcat重定向后,怎么停止logcat运行?

地理重定向上的无限循环

登录脚本PHP上的重定向循环

IE6 上的重定向循环

Laravel 5 中间件 https 上的 aws ec2 重定向循环