【问题标题】:Apache (htaccess) redirect loop http httpsApache (htaccess) 重定向循环 http https
【发布时间】:2016-03-14 00:11:09
【问题描述】:

我们在 Wordpress 主页上遇到了重定向循环,我不知道它来自哪里,我们将 URL 切换到 http://www 到 https://。

这是 htaccess 文件:

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://%1/$1 [R=301,L]

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

http://scrybs.com 正在重定向到 http://www.scrybs.comhttp://www.scrybs.com 正在导致重定向循环...

我尝试停用所有插件,删除 htaccess 文件,但均无效。

非常感谢。

【问题讨论】:

  • 我相信问题出在第一条规则上。将^.*$ 更改为^(.*)$,这样$1 实际上包含了一些东西。
  • @MikeRockett 这个问题发生在 htaccess 调用之前...

标签: php wordpress apache .htaccess redirect


【解决方案1】:

不要将 RewriteRules 用于 HTTP 到 HTTPS 的重定向。将其更改为让 HTTP(端口 80)虚拟主机重定向到 HTTPS(端口 443)虚拟主机,并将所有配置放入 HTTPS(端口 443)配置中。

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

<VirtualHost *:443>
    ServerName www.example.com
    # ... SSL configuration goes here
</VirtualHost >

参考:https://httpd.apache.org/docs/2.4/rewrite/avoid.html

然后,删除这些行:

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://%1/$1 [R=301,L]

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

您可能想要恢复 www 配置,但不进行 HTTPS 更新。

【讨论】:

  • 我必须在我的 .htacess 文件或服务器端添加这些行吗?看来我的问题是在调用 .htaccess 文件之前出现的......
猜你喜欢
  • 2018-08-25
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-02
  • 2015-01-24
  • 2016-03-27
  • 1970-01-01
相关资源
最近更新 更多