web-dev-qa-db-fra.com

Passage de http à https et www. vers une URL non www

Je me bats vraiment avec quelque chose ici. J'essaie de changer mon site pour aller de www. vers non-www, et aussi http: // vers https: //

J'ai mis à jour les paramètres dans options-general.php (adresse WordPress (URL) et adresse du site (URL)). Les deux utilisent la version non-www, ainsi que https: // now.

J'ai également mis à jour le paramètre de cookie dans wp-config.php:

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

Je peux accéder à la wp-admin très bien sur https et la version non-www. Cependant, index.php veut juste me garder dans une boucle infinie, en rechargeant la page d'accueil jusqu'à ce que le navigateur abandonne. Je ne peux pas croire à quel point cela a été difficile!

Quelqu'un a des suggestions sur ce qu'il faut essayer? Jusqu'à présent, j'ai passé 3 heures sur quelque chose qui aurait dû prendre quelques minutes.

Pour ce que ça vaut, j’ai désactivé TOUS les plugins (au cas où c’était bizarre), mais ça ne marche toujours pas.

Il vaut probablement la peine de mentionner que cela doit être un problème de WP, car la modification de index.php fonctionne correctement si je viens de mettre ceci dans le contenu:

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

(MISE À JOUR:} Il est intéressant de noter que je pensais que je devrais passer en revue le code et essayer de voir où il se foutait. Il arrive à /wp-includes/template-loader.php, puis entre dans la boucle ici:

do_action( 'template_redirect' );

... Je ne sais pas où cela va après? (pour essayer de déboguer plus)

UPDATE 2: Je viens d'installer ce plugin: https://wordpress.org/support/plugin/debug-wp-redirect/ . C'est super vieux, mais il m'a montré d'où venait la redirection:

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

Je ne sais tout simplement pas pourquoi son échec (et en utilisant http au lieu de https ici, ce qui, je suppose, est à l'origine de la boucle)

_ {UPDATE 3: Je ne sais pas pourquoi, mais cela ne se produit que sur la page d'accueil!

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/

Tout fonctionne bien. Mais:

http://www.foo.co.uk
http://foo.co.uk
https://foo.co.uk/
http://foo.co.uk

... tous sont coincés dans une boucle infinie. Euh, c'est tellement frustrant!

(UPDATE 4:} _ J'ai réussi à obtenir une trace de pile, mais je ne comprends pas ce qui se passe.

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:

Je pense que c'est maintenant plus et problème avec le www. être pris sur l'URL. Je ne comprends tout simplement pas pourquoi. J'ai tous les plugins désactivés, j'ai complètement migré la base de données (j'ai même essayé d'utiliser un plugin pour rechercher et remplacer la base de données et remplacer l'ancienne URL par la nouvelle) et la page d'accueil refuse toujours de fonctionner! Je suis tombé sur un bug majeur ou autre chose en jeu. C'est le peu que cela me déconcerte:

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

Les URL sont parfaites pour cette partie, puis il la change de manière aléatoire en non seulement http://, mais ajoute également le bit www. à nouveau!

_ {UPDATE 4: Donc l'intrigue s'épaissit! Il s'avère maintenant que le problème réside dans l'utilisation d'une page personnalisée pour la page d'accueil!

Si je modifie le affiche sur la page de couverture _ en "affiche sur la page de garde" (au lieu de "une page statique (sélection ci-dessous)} _", alors cela fonctionne ... mais de toute évidence, j'ai une page d'accueil qui n'a rien de ce dont nous avons besoin, j'ai testé cela avec différents thèmes, et ils ont tous le même problème. ARGH!

1
Andrew Newby

Ajoutez ce qui suit à votre .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

si sur nginx le conseil est pour ce qui suit ..

server {
listen 80;
server_name yoursite.com www.yoursite.com;
return 301 https://yoursite.com$request_uri;
}

se référer à http://www.wpbeginner.com/wp-tutorials/how-to-add-ssl-and-https-in-wordpress/

pour d'autres domaines tels que les modifications des paramètres de site pour https.

1
Justin