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:

http://www.dukescasino.com/

http://dukescasino.com/

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.

65
demandé sur Community 2015-08-17 14:59:39

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>
124
répondu Jason Shah 2016-04-07 11:43:58

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>
71
répondu Cristiano Maia 2015-08-18 09:36:31

Ç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
13
répondu henrike 2016-10-19 21:44:04

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 .

8
répondu Hüseyin Yağlı 2017-05-23 12:10:44

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.

3
répondu Indigo 2017-11-30 09:27:55

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 )

2
répondu l2aelba 2018-06-06 08:49:18

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
1
répondu Steve 2016-10-02 04:02:02

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]
1
répondu lundgren 2017-04-24 16:31:42

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

0
répondu Higher Coding 2017-05-24 00:44:04

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>
0
répondu Tommykx 2017-07-28 09:08:54
<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>
0
répondu Saurabh Panchal 2017-08-04 09:25:13

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é.

0
répondu Raj Singh 2017-08-04 10:47:05

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)

0
répondu Rafael 2017-09-19 08:33:57

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';
0
répondu Alain ANDRE 2018-05-25 14:23:44

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
0
répondu Zihadul Islam 2018-05-28 09:51:38

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>
-1
répondu Aman 2017-06-03 21:49:59