web-dev-qa-db-ja.com

Httpからhttpsへ、そしてwwwへ。非www URLへ

私は本当にここで何かと戦っています。私は私のサイトをwwwから移動するように変更しようとしています。非WWWへ、そしてhttp://からhttps://へ

options-general.php WordPressアドレス(URL) および サイトアドレス(URL) )の設定を更新しました。どちらもwww以外のバージョンを使用しており、https://を使用しています。

また、 wp-config.php のCookie設定も更新しました。

define( 'COOKIE_DOMAIN', 'mysite.co.uk' );

私はちょうどhttpsと非WWWバージョンでwp-adminにアクセスできます。しかし、index.phpは、ブラウザがあきらめるまでホームページをリロードして、無限ループに陥り続けるようにしたいだけです。これがどれほど大変だったか私は信じられない!

誰が何を試すべきかについて何か提案がありますか?私はこれまで3時間を費やしていたはずの何かに費やしました。

それが価値があるもののために、私はすべてのプラグインを無効にしました(それがそれらのうちの1つが奇妙であった場合)、それでもまだうまくいきません。

Index.phpを編集するだけでうまくいくので、にはがWPの問題になることを言及する価値があります。

<?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";

更新: おもしろいことに、私はただコードを見て、どこに問題があるのか​​を確かめようと思った。それは/wp-includes/template-loader.phpに入り、そしてここでループに入ります:

do_action( 'template_redirect' );

...それ以降はどこに行くのか私は知りませんか? (もっと試してデバッグするために)

更新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/"
    }

なぜそれが失敗したのか(そしてここではhttpsの代わりにhttpを使用していますが、ここでループが発生していると思います)

更新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

...すべて無限ループに陥ります。ええと、これはとてもイライラする!

更新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を新しいものに置き換えようとしました)、それでもホームページは機能しません。私が遭遇した大きなバグ、または他に何か問題があるかのどちらかです。これはこれが私を困惑させているビットです:

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.ビットを追加します!

更新4: それでプロットは厚くなります!ホームページにカスタムページを使用するときに問題が発生することがわかりました。

フロントページの表示 を " フロントページの表示 "( " 静的ページ(以下を選択) "の代わりに)に変更すると、うまくいきますが...明らかにゴミがありますホームページを見て、それは私たちがそこに必要なものは何もない。私はさまざまなテーマでこれをテストし、そしてそれらはすべて同じ問題を抱えている。

1
Andrew Newby

あなたの.htaccessに以下を追加してください。

# force https on the front of the site
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]

ref 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のサイト設定の変更など、他の分野では。

1
Justin