Utiliser.htaccess pour rediriger HTTP vers HTTPs
s'il vous Plaît, ne me recommander le longue et très détaillée fil avec plus de 173 upvotes. Il n'a pas de travail pour moi. J'ai aussi essayé beaucoup d'autres ( 1 , 2 , 3 , 4 ). Ils me donnent TOO_MANY_REDIRECTS ou error 500. Donc, voici ma question:
avec mon courant .htaccess, voici ce qui se passe:
https://www.dukescasino.com / - fonctionne parfaitement
https://dukescasino.com/ - redirige vers la au-dessus de ce qui est grand
les deux options ci-dessous charge bien, mais il devrait être rediriger vers la version https:
voici le actuel. htaccess:
<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 pense pas que ce soit pertinent, mais si oui, voici la liste des plugins actifs actuels:
- Advanced Custom Fields
- All In One SEO Pack
- Bop Zone De Recherche Le Type D'Élément De Nav-Menus
- Formulaire De Contact 7
- Désactiver Les Commentaires
- Google XML Sitemaps
- Jetpack par WordPress.com
- Recherche Et Filtre
- Slider WD
- Tablerpress
- UpdraftPlus - Sauvegarde/Restauration
- Wordfence Security
- WPide
- WP Smush
- WP Super Cache
Modifier 1 - essais effectués:
Essai 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
Essai 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
Essai 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} [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
# BEGIN WordPress
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
résultat: 302 trouvé. De plus, une erreur de 500 erreurs de serveur interne a été rencontrée en essayant d'utiliser un ErrorDocument pour traiter la requête.
16 réponses
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>
Problème résolu!
Final .htaccess:
<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>
Ça marche pour moi:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*) https://%{SERVER_NAME}/ [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 beaucoup de règles installées par des plugins comme Future Expiration lointaine et WPSuperCache ainsi que les lignes de wordpress lui-même.
afin de ne pas tout gâcher, j'ai dû mettre la solution au sommet de htaccess (c'est important, si vous la mettez à la fin cela provoque des redirections erronées dues à des conflits avec le plugin de cache)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
This ainsi, vos lignes ne se font pas abîmer par wordpress au cas où certains paramètres changent. En outre, la section <IfModule>
peut être répétée sans aucun problème.
je dois remercier Jason Shah pour la soignée htaccess règle .
pour votre information, Cela dépend vraiment de votre hébergeur.
dans mon cas ( Infomaniak ), rien au-dessus n'a réellement fonctionné et j'ai obtenu boucle de redirection infinie.
la bonne façon de le faire est réellement expliqué dans leur site de soutien :
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://your-domain.com/ [R=301,L]
donc, vérifiez toujours auprès de votre hébergeur. J'espère qu'ils ont un article expliquant comment faire. Sinon, il suffit de demander de l'aide.
ce produit est testé et peut être utilisé en toute sécurité.""
pourquoi?: Quand Wordpress éditant vos règles de réécriture , alors assurez-vous que votre règle HTTPS ne doit pas être supprimé ! donc c'est pas de conflit avec les règles Wordpress natives.
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/ [R,L]
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
#Your our Wordpress rewrite rules...
</IfModule>
# END WordPress
Note: il faut changer WordPress Adresse & Adresse du Site url de https://
dans Paramètres Généraux aussi ( wp-admin/options-general.php
)
j'ai trouvé que toutes les solutions énumérées dans cette Q&R ne fonctionnaient pas pour moi, malheureusement. Ce qui a fonctionné était:
# 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).*) [L]
RewriteRule ^(.*\.php)$ [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
Note, les règles Wordpress ci-dessus sont pour Wordpress en mode réseau multi-utilisateurs. Si votre Wordpress est en mode site unique, vous utiliserez:
# 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]
Voici une solution alternative que vous pouvez utiliser si vous ne voulez 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 le placer au bas de votre thème functions.php
Ajouter cela dans le de WordPress .fichier htaccess:
RewriteCond %{HTTP_HOST} ^yoursite.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.yoursite.com [NC]
RewriteRule ^(.*)$ https://www.yoursite.com/ [L,R=301,NC]
donc le WordPress par défaut' .le fichier htaccess doit 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/ [L,R=301,NC]
</IfModule>
<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/ [L,R=301]
</IfModule>
La finale .htaccess et les tests A,B,C,D, E n'ont pas fonctionné pour moi. Je viens d'utiliser ci-dessous 2 lignes de code et il fonctionne dans mon site WordPress:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.thehotskills.com/ [R=301,L]
Je ne sais pas où j'ai fait l'erreur mais cette page m'a aidé.
manière la plus facile de rediriger http vers https dans wordpress it pour modifier site_url et home de http://example.com à https://example.com . Wordpress fera la redirection. ( c'est pourquoi vous obtenez "trop de redirections" erreur, wordpress est la redirection http .htaccess redirigera vers https)
Aucun si ça a marché pour moi. Tout d'abord, j'ai dû regarder mon fournisseur pour voir comment ils activer le SSL dans .htaccess
mon fournisseur donne
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:HTTPS} !on
RewriteRule (.*) https://%{SERVER_NAME}/ [QSA,L,R=301]
</IfModule>
mais ce qui m'a pris des jours de recherche 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';
il suffit d'ajouter ou de remplacer ce code dans votre .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
il suffit d'ajouter ce code, et il fonctionnera comme le charme:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST}#%{HTTPS}s ^www\.([^#]+)#(?:off|on(s)) [NC]
RewriteRule ^ http%2://%1%{REQUEST_URI} [R=301,L]
</IfModule>