使用Wordpress时如何重定向到https?

时间:2014-09-24 18:54:10

标签: wordpress .htaccess redirect

我尝试使用.htaccess将al http://页面重定向到https://。通过使用Apache网站上提供的代码,我可以使用常规页面来解决这个问题,但是在使用WordPress时我也遇到了相同的问题。

我尝试了question here,但它并没有帮助我。

以下是我使用的代码:

# BEGIN WordPress
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://example.com/$1 [R,L]

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

我收到此消息:

The webpage at https://example.com/ has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer.

我还在Stack Overflow上尝试了this answer,结果相同。我显然清理了缓存和cookie以查看是否存在问题,尝试了不同的浏览器甚至是不同的计算机,尽可能地修改了代码,但我只是放弃了,所以我正在寻求帮助。

我在这里做错了什么?任何帮助非常感谢

编辑:虽然我解决了这个问题,但我发现还有一个我不知道的问题,这是主要问题。网站所有者在我不知情的情况下安装了WordPress HTTPS Plugin,我没有注意到它(我的不好)。这个,添加到我不得不做的数据库更改和一些持久的缓存问题导致网站疯狂。

所以,这就是我所做的:

  • 1)在设置&gt;一般&gt; WordPress地址(URL)将http ...地址更改为https
  • 2)在设置&gt;一般&gt;站点地址(URL)将http ...地址更改为https
  • 3)使用 lxg 数据库更改建议
  • 4)删除了WordPress HTTPS插件
  • 5)再次创建永久链接(仅创建一个新的.htaccess文件)

的Bam!像魅力一样。

只是一个警告:这打破了网站,因为我正在提供来自CDN的文件,如JQuery,Bootstrap等,所以他们被拒绝作为安全连接。我只需要在我的服务器中托管文件,现在一切都按预期工作。

希望这有助于某人,我确定知道我几乎疯了!

2 个答案:

答案 0 :(得分:1)

问题是WordPress也将基本URL存储在数据库中,并尝试重定向到它们。您也必须更新这些字段。

这通常在管理区域中完成,但是当重定向处于活动状态时,您通常无法访问它。因此,您可以使用简单的数据库查询来完成此操作。

首先,检查旧值...以防出现问题。 (注意:我假设您的表前缀是默认的wp_。)

SELECT * 
FROM wp_options
WHERE option_name IN ('home', 'siteurl');

这应该给你类似的东西:

+-----------+-------------+------------------------+----------+
| option_id | option_name | option_value           | autoload |
+-----------+-------------+------------------------+----------+
|        37 | home        | http://www.example.com | yes      |
|         1 | siteurl     | http://www.example.com | yes      |
+-----------+-------------+------------------------+----------+

如果两个option_value相等(它们占所有WP安装的99%),您可以使用一个查询将它们更新为新URL,如下所示。否则,请单独更新。

UPDATE wp_options
SET option_value = 'https://www.example.com' 
WHERE option_name IN ('home', 'siteurl');

现在您应该通过新网址进行WP安装。

另一个问题是帖子或其他设置(例如插件)包含旧网址。

这应该由WordPress正确处理 - 但是:(a)每次调用旧URL都是对网络服务器的不必要调用,(b)它将不必要地重定向用户以使用不安全的URL。

对于这个问题,没有简单的黑客攻击,但您需要在数据库中进行搜索和替换。我DB search/replace的结果很好(但并不总是很完美)。使用它时,一定要备份数据库 - 虽然它是一个稳定的工具,它所做的事情很容易导致错误。

答案 1 :(得分:0)

您还可以使用ssl-insecure-content-fixer修复任何jquery错误。如果安装在多站点设置上,则必须在每个子域上单独激活。