web-dev-qa-db-fra.com

https redirections multiples

Je suis en train de changer mon protocole de http à https.

J'ai Wordpress installé en tant que sous-répertoire (par exemple: www.example.com/blog)

Le serveur se trouve derrière un équilibreur de charge, les demandes adressées à celui-ci sont chiffrées, mais pas les demandes de celui-ci au serveur.

J'ai mis à jour les paramètres home et siteurl pour refléter l'adresse https. Et j'ai ajouté le code suivant à mon fichier wp-config.php:

if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
       $_SERVER['HTTPS']='on';

Pour une raison quelconque, lorsque je vais à l'URL https://www.example.com/blog , les redirections suivantes se produisent: https: //...blog -> http://...Blog/

http: //...blog/ -> https: //...blog/

Je peux vivre avec une redirection (celle pour l'ajout de la barre oblique), mais je ne comprends pas pourquoi elle redirige vers l'adresse http://. Je ne vois rien dans ma configuration qui mentionne toujours http://.

Pourquoi ça fait ça?

J'ai essayé de vider le cache de mon navigateur. J'ai aussi un fichier .htaccess mais je soupçonne que ça n'a rien à voir avec ça parce que les redirections se produisent même quand tout le code dans le fichier .htaccess est commenté

Dans quelqu'un trouve toujours le fichier htaccess pertinent: J'ai deux règles dans le fichier htaccess:

RewriteEngine On

RewriteCond %{HTTP:X-Forwarded-Proto} =http

RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

pour rediriger http en https

et

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

pour ajouter la barre oblique (je pense).

Bien que la première règle ne soit pas pertinente (parce que je vais directement à l'adresse https). Et commenter la deuxième règle n’a aucun effet sur la question en question.

Y a-t-il un autre endroit de ma configuration où je dois mettre à jour wordpress sur le fait que j'utilise https?

Merci.

2
theyuv

C'est en quelque sorte une hypothèse, mais c'est probablement le résultat de la configuration du serveur Web. Ce que votre serveur fait probablement, c'est de voir que la demande veut charger l'URL blog du site. Il vérifie et voit que blog est un répertoire qui ajoute une barre oblique et y redirige. Maintenant, parce que l'équilibreur de charge envoie une demande http à la redirection du serveur Web vers http. Après cela, la requête est faite dans le répertoire wordpress et toute votre logique htaccess et wordpress démarre et fournit les informations/redirections correctes, etc.

Solution ... s'il ne s'agit pas seulement d'une bonne histoire, mais également d'une histoire vraie, une redirection http vers https dans un accès htaccess du répertoire racine devrait probablement résoudre le problème.

Si cela résout réellement le problème (et que vous pensez que le correctif vaut votre temps), vous voudrez peut-être envisager de fusionner le htaccess "wordpress" à la racine car Apache lit tous les htaccess de chaque répertoire de la hiérarchie à chaque demande "eux qui est une perte de temps inutile.

1
Mark Kaplun

Vous devez mettre à jour les baseurls dans votre base de données. À savoir les valeurs d'option pour siteurl et home dans le tableau des options.

Le code suivant le fera pour vous de manière robuste. Méfiez-vous du préfixe, que j'ai indiqué ici est "wp_" mais qui, bien sûr, ne devrait pas l'être! :) Bien entendu, vous devez également modifier le nom du site:

UPDATE wp_options SET option_value = replace(option_value, 'http://www.example.com/blog', 'https://www.example.com/blog') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.example.com/blog', 'https://www.example.com/blog');
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.example.com/blog', 'https://www.example.com/blog');
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://www.example.com/blog','https://www.example.com/blog');
0
mayersdesign

Essayez ceci dans votre fichier .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/

RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

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

Voir si ça aide

0
JItendra Rana

Vous ne devriez pas avoir à éditer vous-même des fichiers WordPress. WordPress peut être utilisé avec http ou https sans qu'il soit nécessaire de modifier le code manuellement.

Si vous devez modifier le protocole d'un site WordPress existant, vous pouvez faire deux choses:

  1. Assurez-vous que votre blog est accessible via http et https. Ensuite, passez à vos paramètres WordPress dans le backend et mettez à jour l’url des blogs depuis http://example.org vers https://example.org WordPress devrait mettre à jour la base de données et le fichier .htaccess lui-même.

  2. vous pouvez faire une recherche et remplacer sur la base de données. Pour ce faire, vous devez connaître les données sérialisées, qui ne sont pas reconnues avec un processus simple de recherche et remplacement. Je vous suggère d'utiliser un outil comme de interconnect

Assurez-vous que votre wp-config.php ne contient pas d’URL codée en dur ( voir "Modification de l’URL du site" ), qui écrasera à nouveau vos modifications.

0
Felix