8768 sujets

Développement web côté serveur, CMS

Bonjour,

je cherche à forcer la redirection en https d'un site WordPress hébergé chez Ionos 1&1

l'hébergeur recommande de poser un fichier .htaccess dans la racine avec le contenu suivant:


RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^(.*)$  https://exemple.com/$1  [R=301,L]


où on remplace 'example.com' par le nom de domaine du site.

Mais il en existe déjà un fichier .htaccess avec ce contenu


# BEGIN WordPress
# Les directives (lignes) entre « BEGIN WordPress » et « END WordPress » sont générées
# dynamiquement, et doivent être modifiées uniquement via les filtres WordPress.
# Toute modification des directives situées entre ces marqueurs sera surchargée.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress


Peut-on combiner les deux ?
la fois où j'ai essayé de combiner les deux, ça a bloqué le site.
Modifié par lionel_css3 (04 Jan 2021 - 18:07)
Modérateur
Bonjour,

Et ça (il faut ajouter les lignes au début, et pas entre les # BEGIN WordPress et # END WordPress, ni après):


RewriteEngine On
RewriteCond {HTTPS} != on
RewriteRule ^.*$  https://%{HTTP_HOST}%{REQUEST_URI}  [L,R=301]

# BEGIN WordPress
# Les directives (lignes) entre « BEGIN WordPress » et « END WordPress » sont générées
# dynamiquement, et doivent être modifiées uniquement via les filtres WordPress.
# Toute modification des directives situées entre ces marqueurs sera surchargée.
<IfModule mod_rewrite.c>
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Amicalement,
parsimonhi a écrit :
Bonjour,

Et ça (il faut ajouter les lignes au début, et pas entre les # BEGIN WordPress et # END WordPress, ni après):


Amicalement,


ah d'accord, on peut faire ça, alors je vais essayer..
j'étais pas certain que l'on puisse cumuler les règles rewrite


merci à toi, je te dirai ce que ça donne
Modérateur
Bonjour,

On va dire que ma proposition est plus générale.

Mais il y a plein de variantes possibles.

À vue de nez, la solution de ton hébergeur devrait elle aussi fonctionner dans ton cas. Il faudrait tester ce que je n'ai pas fait.

Le principe (qui est à peu près le même dans ces deux variantes) est le suivant :

1) si l'adresse demandée par le navigateur n'est pas en https (je teste si c'est https, et ton hébergeur teste si c'est le port 443 qui est le port pour le https, ce qui donc revient presque au même), alors le script met dans l'adresse https (je traite n'importe quelle adresse, ton hébergeur suggère de mettre l'adresse de ton site en dur) et on sort du script (c'est le flag [L] qui indique ça).
2) comme il y a eu ré-écriture, l'adresse modifiée avec le https dedans est re-présentée au script.
3) le script teste à nouveau si c'est du https qui est demandé. Comme cette fois-ci c'est le cas, on continue d'exécuter la suite du script qui est la partie entre les # BEGIN WordPress et # END WordPress, comme si dès le départ le navigateur avait demandé une adresse en https.

Note que comme la partie entre # BEGIN WordPress et # END WordPress semble générée automatiquement par wordpress (je n'ai pas vérifié ce que wordpress fait exactement car je n'ai pas ce qu'il faut sous la main), ça ne sert à rien d'y mettre tes modifications.

Amicalement,
Meilleure solution
parsimonhi a écrit :
Bonjour,

On va dire que ma proposition est plus générale.

Le principe (qui est à peu près le même dans ces deux variantes) est le suivant :
......

Amicalement,


Merci pour tes précisions, et effectivement la solution de l'hébergeur (domaine en dur) fonctionne parfaitement...