从http迁移到HTTPS,以及WWW。到非WWW URL

时间:2017-04-28 作者:Andrew Newby

我真的在和一些事情斗争。我正在尝试将我的网站从www.改为非www,并将http://改为https://

我已经更新了“选项常规”中的设置。php(WordPress Address (URL)Site Address (URL)). 这两个版本都使用非www版本,也使用https://now。

我还更新了中的cookie设置wp-config.php:

define( \'COOKIE_DOMAIN\', \'mysite.co.uk\' );
我可以在https和非www版本上访问wp管理员。但是,索引。php只是想让我进入无限循环,重新加载主页,直到浏览器放弃为止。我真不敢相信这有多困难!

有人对尝试什么有什么建议吗?到目前为止,我已经花了3个小时,在一些本该花上几分钟的事情上。

不管怎样,我已经禁用了所有插件(以防其中一个插件很奇怪),但仍然不起作用。

可能值得一提的是,作为编辑索引,这将是一个WP问题。如果我将以下内容放在php中,则php工作正常:

<?php
/**
 * Front to the WordPress application. This file doesn\'t do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define(\'WP_USE_THEMES\', true);

echo header();
echo "FOO";
UPDATE: 有趣的是,我想我只需要浏览一下代码,看看哪里出了问题。它到达/wp includes/template loader。php,然后进入循环:

do_action( \'template_redirect\' );
。。。我不知道那之后会发生什么?(尝试并调试更多)

UPDATE 2: 我刚刚安装了这个插件:https://wordpress.org/support/plugin/debug-wp-redirect/ . 它非常古老,但它向我展示了重定向的来源:

Debug WP Redirect
Location: https://mysite.co.uk/
Status: 301
Backtrace:

    File: /home/rachel/web/mysite.co.uk/public_html/wp-includes/class-wp-hook.php
    Line: #298
    Function: redirect_canonical
    Arguments:

    array(1) {
      [0]=>
      string(27) "http://mysite.co.uk/"
    }
我只是不知道为什么它会失败(在这里使用http而不是https,我想这就是循环的来源)

UPDATE 3: 我不知道为什么,但这只发生在主页上!

http://www.foo.co.uk/wires-eyewear/
http://foo.co.uk/wires-eyewear/
https://www.foo.co.uk/wires-eyewear/
https://foo.co.uk/wires-eyewear/
一切正常。但是:

http://www.foo.co.uk
http://foo.co.uk
https://foo.co.uk/
http://foo.co.uk
。。。所有人都陷入了一个无限循环。恩,这太令人沮丧了!

UPDATE 4: 我成功地获得了堆栈跟踪,但我不知道发生了什么。

PHP message:            File: /home/rachel/web/ladympresents.co.uk/public_html/wp-includes/class-wp-hook.php

PHP message:            Line: #298

PHP message:            Function: debug_wp_redirect

PHP message:            Arguments:



PHP message: array(2) {
  [0]=>
  string(28) "https://ladympresents.co.uk/"
  [1]=>
  int(301)
}

PHP message:
PHP message:            File: /home/rachel/web/ladympresents.co.uk/public_html/wp-includes/plugin.php

PHP message:            Line: #203

PHP message:            Class: #WP_Hook

PHP message:            Function: apply_filters

PHP message:            Arguments:



PHP message: array(2) {
  [0]=>
  string(28) "https://ladympresents.co.uk/"
  [1]=>
  array(2) {
    [0]=>
    string(28) "https://ladympresents.co.uk/"
    [1]=>
    int(301)
  }
}

PHP message:
PHP message:            File: /home/rachel/web/ladympresents.co.uk/public_html/wp-includes/pluggable.php

PHP message:            Line: #1181

PHP message:            Function: apply_filters

PHP message:            Arguments:



PHP message: array(3) {
  [0]=>
  string(11) "wp_redirect"
  [1]=>
  string(28) "https://ladympresents.co.uk/"
  [2]=>
  int(301)
}

PHP message:
PHP message:            File: /home/rachel/web/ladympresents.co.uk/public_html/wp-includes/canonical.php

PHP message:            Line: #516

PHP message:            Function: wp_redirect

PHP message:            Arguments:



PHP message: array(2) {
  [0]=>
  string(28) "https://ladympresents.co.uk/"
  [1]=>
  int(301)
}

PHP message:
PHP message:            File: /home/rachel/web/ladympresents.co.uk/public_html/wp-includes/class-wp-hook.php

PHP message:            Line: #298

PHP message:            Function: redirect_canonical

PHP message:            Arguments:



PHP message: array(1) {
  [0]=>
  string(31) "http://www.ladympresents.co.uk/"
}

PHP message:
PHP message:            File: /home/rachel/web/ladympresents.co.uk/public_html/wp-includes/class-wp-hook.php

PHP message:            Line: #323

PHP message:            Class: #WP_Hook

PHP message:            Function: apply_filters

PHP message:            Arguments:
我认为,随着www.被从URL中删除,这将是一个更大的问题。我只是不明白为什么。我禁用了每一个插件,我已经完全迁移了DB(我甚至尝试使用插件搜索和替换DB,并用新的URL替换旧的URL),但主页仍然不起作用!要么是我偶然发现了一个主要的bug,要么是其他什么在起作用。这就是让我困惑的地方:

PHP message:
PHP message:            File: /home/rachel/web/ladympresents.co.uk/public_html/wp-includes/class-wp-hook.php

PHP message:            Line: #298

PHP message:            Function: redirect_canonical

PHP message:            Arguments:
PHP message: array(1) {
  [0]=>
  string(31) "http://www.ladympresents.co.uk/"
}
URL在这一部分是完美的,然后它会随机将其更改回http://, 但也添加了www. 再咬一口!

UPDATE 4: 所以情节变厚了!现在的问题是,在主页中使用自定义页面时!

如果我更改Front page displays 至“Front page displays“(代替”A static page (select below)“,然后它就工作了……但很明显,我的主页看起来很垃圾,上面没有我们需要的东西。我用不同的主题测试了这个,它们都有相同的问题。啊!

1 个回复
SO网友:Justin

将以下内容添加到。htaccess。。

# force https on the front of the site
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
参考https://stackoverflow.com/questions/4398951/force-ssl-https-using-htaccess-and-mod-rewrite

如果在nginx上,建议如下:。。

server {
listen 80;
server_name yoursite.com www.yoursite.com;
return 301 https://yoursite.com$request_uri;
}
参见http://www.wpbeginner.com/wp-tutorials/how-to-add-ssl-and-https-in-wordpress/

对于其他区域,如https的站点设置更改。

相关推荐

多站点:将主站点的URL更改为HTTPS

我已经在新安装的WordPress上设置了多站点。然后我创建了一些其他网站,所以,最后,我有了这样的东西http://example.comhttp://site1.example.comhttp://site2.example.comhttp://site3.example.com然后我安装了SSL数字证书,因此我更改了网站的URL以匹配HTTPS方案:http://example.com更改我转到的方案Sites > All Sites, 然后单击每个站点,在选项卡“信息”(第一个)中,我只需更