S'il vous plaît, ne me recommandez pas le fil long et très détaillé avec plus de 173 votes positifs. Cela n'a pas fonctionné pour moi. J'ai aussi essayé beaucoup d'autres ( 1 , 2 , 3 , 4 ). Ils me donnent tous TOO_MANY_REDIRECTS ou erreur 500. Voici donc mon problème:
Avec mon .htaccess actuel, voici ce qui se passe:
https://www.dukescasino.com/ - fonctionne parfaitement
https://dukescasino.com/ - redirige vers ce qui précède, ce qui est excellent
Les deux options ci-dessous se chargent très bien, mais il devrait être redirigé vers la version https:
Voici le .htaccess actuel:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Je ne crois pas que cela soit pertinent, mais si oui, voici la liste des plugins actifs actuels:
Edit 1 - Tests effectués:
Test A:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
RewriteCond %{HTTP_Host} !^www\.
RewriteRule .* https://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Résultat: ERR_TOO_MANY_REDIRECTS
Test B:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Résultat: ERR_TOO_MANY_REDIRECTS
Test C:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Résultat: ERR_TOO_MANY_REDIRECTS
Test D:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Résultat: ERR_TOO_MANY_REDIRECTS
Test E:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_Host} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_Host}%{REQUEST_URI}$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI}$1
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Résultat: 302 trouvé. En outre, une erreur 500 Internal Server Error s'est produite lors de la tentative d'utilisation d'un ErrorDocument pour gérer la demande.
Problème résolu!
.Htaccess final:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Sur Dreamhost, cela a fonctionné:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Ça marche pour moi:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Dans mon cas, le fichier htaccess contenait de nombreuses règles installées par des plugins tels que Far Future Expiration et WPSuperCache, ainsi que les lignes de wordpress.
Afin de ne pas gâcher les choses, j'ai dû placer la solution au sommet de htaccess (c'est important, si vous le mettez à la fin, cela provoque des redirections erronées en raison de conflits avec le plugin cache)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
</IfModule>
Ainsi, wordpress ne perturbera pas vos lignes si certains paramètres changent. Également <IfModule>
Cette section peut être répétée sans aucun problème.
Je dois remercier Jason Shah pour la règle nette htaccess .
Pour votre information, cela dépend vraiment de votre fournisseur d'hébergement.
Dans mon cas ( Infomaniak ), rien ci-dessus n'a réellement fonctionné et j'ai obtenu une boucle de redirection infinie.
La bonne façon de faire est en fait expliqué sur leur site de support :
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://your-domain.com/$1 [R=301,L]
Alors, vérifiez toujours avec votre fournisseur d'hébergement. J'espère qu'ils ont un article expliquant comment faire cela. Sinon, il suffit de demander au support.
Pourquoi ?: Lorsque Wordpress modifie vos règles de réécriture , assurez-vous que votre règle HTTPS ne doit pas être supprimée ! c'est donc pas de conflit avec les règles natives Wordpress.
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
#Your our Wordpress rewrite rules...
</IfModule>
# END WordPress
Remarque: Vous devez modifier Adresse WordPress & Adresse du site urls à https://
dans Paramètres généraux aussi (wp-admin/options-general.php
)
J'ai trouvé que toutes les solutions énumérées dans ce Q & R ne fonctionnaient pas pour moi, malheureusement. Quel a été le travail:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
RewriteCond %{HTTP_Host} ^example\.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.example\.com$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/" [R=301,L]
</IfModule>
# End Wordpress
Notez que les règles Wordpress ci-dessus s'appliquent à Wordpress en mode réseau multi-utilisateurs. Si votre Wordpress est en mode site unique, vous utiliseriez:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_Host} ^example\.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.example\.com$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/" [R=301,L]
</IfModule>
# End Wordpress
Rien de ce qui précède n'a fonctionné pour moi. Mais ces lignes ont résolu le même problème sur mon site WordPress:
RewriteEngine On
RewriteCond %{HTTP:HTTPS} !on
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
Ajoutez ceci dans le fichier .htaccess de WordPress:
RewriteCond %{HTTP_Host} ^yoursite.com [NC,OR]
RewriteCond %{HTTP_Host} ^www.yoursite.com [NC]
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [L,R=301,NC]
Par conséquent, le fichier .htaccess par défaut de WordPress devrait ressembler à ceci:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_Host} ^yoursite.com [NC,OR]
RewriteCond %{HTTP_Host} ^www.yoursite.com [NC]
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [L,R=301,NC]
</IfModule>
le moyen le plus simple de rediriger http vers https dans wordpress consiste à modifier site_url et home de http://exemple.com vers https://exemple.com . Wordpress fera la redirection. (c'est pourquoi vous obtenez une erreur "trop de redirections", wordpress redirige vers http tandis que .htaccess redirigera vers https)
Aucun si cela a fonctionné pour moi. Avant tout, je devais regarder mon fournisseur pour voir comment il activait SSL dans .htaccess
que mon fournisseur donne
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:HTTPS} !on
RewriteRule (.*) https://%{SERVER_NAME}/$1 [QSA,L,R=301]
</IfModule>
Mais ce qui m'a pris des jours de recherche, c'est que j'ai dû ajouter à wp-config.php
les lignes suivantes car mon site fourni est derrière un proxy:
/**
* Force le SSL
*/
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on';
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
RewriteEngine On
RewriteCond %{HTTP_Host} ^digitalsoftwaremarket.com [NC]
RewriteRule ^(.*)$ http://www.digitalsoftwaremarket.com/$1 [L,R=301]
</IfModule>
Voici une solution alternative que vous pouvez utiliser si vous ne souhaitez pas éditer .htaccess
:
add_action( 'template_redirect', 'nonhttps_template_redirect', 1 );
function nonhttps_template_redirect() {
if ( is_ssl() ) {
if ( 0 === strpos( $_SERVER['REQUEST_URI'], 'https' ) ) {
wp_redirect( preg_replace( '|^http://|', 'https://', $_SERVER['REQUEST_URI'] ), 301 );
exit();
} else {
wp_redirect( 'https://' . $_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI'], 301 );
exit();
}
}
}
Vous pouvez placer ceci au bas de votre thème functions.php
Le .htaccess final et le test A, B, C, D, E ne fonctionnaient pas pour moi. Je viens d'utiliser ci-dessous du code de 2 lignes et cela fonctionne sur mon site WordPress:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.thehotskills.com/$1 [R=301,L]
Je ne sais pas trop où j'ai commis l'erreur, mais cette page m'a aidé.
Rediriger de http à https: // www
RewriteEngine On RewriteCond %{HTTP_Host} ^example\.com [NC] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
Cela fonctionnera à coup sûr!
Il suffit d’ajouter ou de remplacer ce code dans votre fichier .htaccess dans wordpress
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress