Topic: HTTPS pour Drupal 7
Je fais un nouveau sujet pour reprendre et continuer https://forum.tuxfamily.org/post/2959/#p2959
Cela peut peut-être aider des gens.
Il s'agit de mettre un site fait avec Drupal, entièrement en HTTPS, download.tuxfamily.org compris. et en passant, faire accéder le site uniquement par http://domaine.fr et non pas http://www (c'est juste que je ne vois pas l'intérêt pour moi. J'ai peut-être tort.
Dans la base de données:
J'ai lu que certains n'ont rien trouvé de mieux qu'importer leur DB, et faire search and replace dans Geany ;-)
Est-ce une solution?
URLs générées par Drupal
Oui, j'ai vu en lisant sur Drupal:
École #1 : mettre une $base_url en https, et implémenter via .htaccess la redirection qui va bien pour oublier complètement HTTP
$base_url se met dans settings.php, c'est facile.
Ensuite, .htaccess
Dans ce fichier il y a déjà des choses:
# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on
# Set "protossl" to "s" if we were accessed via https://. This is used later
# if you enable "www." stripping or enforcement, in order to ensure that
# you don't bounce between http and https.
RewriteRule ^ - [E=protossl]
RewriteCond %{HTTPS} on
RewriteRule ^ - [E=protossl:s]
# To redirect all users to access the site WITHOUT the 'www.' prefix,
# (http://www.example.com/... will be redirected to http://example.com/...)
# uncomment the following:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
En décommentant les lignes du dessus comme je l'ai fait, on a fait un tout petit pas. Mais je n'ai pas testé encore ;-)
Sur Drupal, la doc donne une autre idée: https://www.drupal.org/https-information
You may want to redirect all traffic from http://yourdomain.com and http://www.yourdomain.com to https://youdormain.com. You can do that by adding this to your .htaccess file:
RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^www.domainname\.com* RewriteRule ^(.*)$ https://domainname.com/$1 [L,R=301]
Put that below RewriteEngine on.
There are existing comments in .htaccess around line 95 that explain how to redirect http://domainname.com to http://www.domainname.com (and vice versa), but this code here redirects both of those to https://domainname.com.
Donc, je pense qu'ils veulent dire que leur code remplace ceci dans .htaccess
# To redirect all users to access the site WITHOUT the 'www.' prefix,
# (http://www.example.com/... will be redirected to http://example.com/...)
# uncomment the following:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
je me demandais si on ne peut pas garder:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
En modifiant protossl comme ceci:
{ENV:protossl:s}
Mais si on choisit la solution donnée par la doc de Drupal, est-ce qu'il faut utiliser ce morceau?:
# Set "protossl" to "s" if we were accessed via https://. This is used later
# if you enable "www." stripping or enforcement, in order to ensure that
# you don't bounce between http and https.
RewriteRule ^ - [E=protossl]
RewriteCond %{HTTPS} on
RewriteRule ^ - [E=protossl:s]
Je vais demander sur Drupal mais il y a tellement de demandes que ce n'est pas sûr qu'une réponse arrive. Je continue de chercher en tous cas.
Bon je rajoute trois idées qui ne semblent pas insensées lu sur le même lien Drupal que plus haut:
un type a simplement fait ça sur Apache:
#redirect all traffic to https
RedirectMatch permanent ^(.*)$ https://www.example.com$1
mais ça doit pouvoir se faire dans .htacess?
et il a simplement ajouté dans settings.php:
$_SERVER['HTTPS'] = 'on';
un type propose:
# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Set "protossl" to "s" if we were accessed via https://. This is used later
# if you enable "www." stripping or enforcement, in order to ensure that
# you don't bounce between http and https.
RewriteRule ^ - [E=protossl]
RewriteCond %{HTTPS} on
RewriteRule ^ - [E=protossl:s]
un autre dit que ça c'est plus costaud:
# Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Il dit qu'il met ça en fin de fichier au cas où, mais j'imagine que ces lignes ne sont plus nécessaires (la 2e est en conflit en tous cas):
RewriteRule ^ - [E=protossl]
RewriteCond %{HTTPS} on
RewriteRule ^ - [E=protossl:s]
Une de ces solutions devrait marcher tout de même.
Merci d'avance de vos bons conseils.