Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/04/2017, à 07:25

oliver2004

Forcer www et https://

Bonjour,
J'ai un petit souci pour forcer le www et https
J'ai beau chercher des solutions sur différents site, ça ne fonctionne pas entièrement.
Dans mon virtualhost j'ai testé tout un tas de codes jusqu'à arriver à ceci:

RewriteEngine on
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.domaine\.com$ [NC]
RewriteRule ^(.*)$ https://www.domaine.com/$1 [L,R=301]

Sur le navigateur sur la barre d'adresse:
domaine.com -> https://www.domaine .com, OK
www.domaine.com -> https://www.domaine.com, OK
http://www.domaine.com -> https://www.domaine.com, OK
http://domaine.com -> https://www.domaine.com, OK

Mais alors, impossible de passer de https://domaine.com à https://www.domaine.com, ça reste à https://domaine.com
J'ai cherché et cherché... rien...

Dernière modification par oliver2004 (Le 08/04/2017, à 07:27)


Bureaux: Ubuntu Serveur Edition 18.04.4 LTS, Kubuntu, Xubuntu sur portables 18.04 LTS ou 20.04 LTS
Déjà 13 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#2 Le 08/04/2017, à 09:34

bruno

Re : Forcer www et https://

Bonjour,

Une façon de faire est de d'abord forcer le HTTPS avec une redirection 301, puis de faire la réécriture de tout ce qui ne commence pas par www. vers www.domaine.com (attention si tu as d'autres domaines toto.domaine.com) :

<VirtualHost *:80>
…
    Redirect permanent / https://domaine.com
</VirtualHost>

<VirtualHost *:443>
…
    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^(www).doamine.com$
    RewriteRule ^(.*) https://www.domaine.com/$1 [QSA,L,R=301]
…
</VirtualHost>

Dernière modification par bruno (Le 08/04/2017, à 09:35)

En ligne

#3 Le 08/04/2017, à 16:10

bobe

Re : Forcer www et https://

Salut,

Solution à base de virtualhost et redirect :

<VirtualHost *:80>
    ServerName domaine.com
    ServerAlias www.domaine.com
    Redirect / https://www.domaine.com/
</VirtualHost>
<VirtualHost *:443>
    ServerName domaine.com
    Redirect / https://www.domaine.com/
</VirtualHost>

Hors ligne

#4 Le 08/04/2017, à 19:00

HPIR40

Re : Forcer www et https://

+1 bobe

la solution du redirect est la plus facile à mettre en place et la plus propre

Hors ligne

#5 Le 10/04/2017, à 04:50

oliver2004

Re : Forcer www et https://

bobe a écrit :

Salut,

Solution à base de virtualhost et redirect :

<VirtualHost *:80>
    ServerName domaine.com
    ServerAlias www.domaine.com
    Redirect / https://www.domaine.com/
</VirtualHost>
<VirtualHost *:443>
    ServerName domaine.com
    Redirect / https://www.domaine.com/
</VirtualHost>

Bonjour, merci pour les retours

J'ai donc testé la solution du Redirect, ça semble en effet très propre, mais ça ne le fait qu'à moitié.
Dans la config, j'ai installé un certificat Let's Encrypt. J'avais au départ un fichier virtualhost pour le http sur le port 80. L'installation du certificat a créé un fichier vhost secondaire pour le https de façon automatique.
J'ai donc mis la commande Redirect dans le fichier VirtualHost du port 80 et dans le fichier du VirtualHost du port 443.
Je teste et la redirection se fait bien en https://www.domaine.com mais ça n'affiche pas la page mais ceci:

Serveur a écrit :

La page n’est pas redirigée correctement

Firefox a détecté que le serveur redirige la demande pour cette adresse d’une manière qui n’aboutira pas.

    La cause de ce problème peut être la désactivation ou le refus des cookies.

Ça me crée un Redirection loop...

J'ai commenté le Redirect / https://www.domaine.com/ dans le virtualhost du port 443, et là, ça marche, il n'y a plus de loop mais plus non plus de redirection lorsque je tape https://domaine.com, ça reste https://domaine.com...
Ou bien alors il faudrait unir les deux fichiers en un seul, mais à la prochaine actu de Let's Encrypt, ça risque de causer des erreurs...
Compliqué cette redirection...

Dernière modification par oliver2004 (Le 10/04/2017, à 04:53)


Bureaux: Ubuntu Serveur Edition 18.04.4 LTS, Kubuntu, Xubuntu sur portables 18.04 LTS ou 20.04 LTS
Déjà 13 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#6 Le 10/04/2017, à 07:50

bruno

Re : Forcer www et https://

Essaie ma solution (testée et éprouvée). Que tu aies tout dans un sel fichier ou deux fichiers ne changera rien.

Effectivement la solution de bobe créé une boucle de redirection : si tu tentes  d'accèder à http://domaine.com la première directive te redirige vers https://www.domaine.com, c'est alors l'hôte virtuel sur le port 443 qui est interprété et qui te redirige à nouveau vers https://www.doamaine.com

Dernière modification par bruno (Le 10/04/2017, à 08:51)

En ligne

#7 Le 10/04/2017, à 08:02

moko138

Re : Forcer www et https://

Question de béotien :
s'il vous plaît, à quoi sert d'intercaler un ".www." entre https:// et la suite ?


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#8 Le 10/04/2017, à 08:46

bruno

Re : Forcer www et https://

@moko138 : à rien wink
C'est une vielle habitude d'utiliser un nom de domaine commençant par www pour les serveurs web, mais ce n'est nullement obligatoire.

Cependant cette pratique étant bien ancrée depuis 20 ans, il est souvent conseillé d'avoir un site accessible indifféremment sur les deux domaines, avec et sans le www. Dans ce cas il faut utiliser une redirection (ou réécriture) permanente afin d'éviter que les moteurs de recherche n’indexent 2 fois le site (ce qui risque de pénaliser le site pur contenu dupliqué).

Dernière modification par bruno (Le 10/04/2017, à 08:50)

En ligne

#9 Le 10/04/2017, à 09:05

moko138

Re : Forcer www et https://

Merci bruno !  smile


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#10 Le 10/04/2017, à 17:41

oliver2004

Re : Forcer www et https://

bruno a écrit :

Essaie ma solution (testée et éprouvée). Que tu aies tout dans un sel fichier ou deux fichiers ne changera rien.

Effectivement la solution de bobe créé une boucle de redirection : si tu tentes  d'accèder à http://domaine.com la première directive te redirige vers https://www.domaine.com, c'est alors l'hôte virtuel sur le port 443 qui est interprété et qui te redirige à nouveau vers https://www.doamaine.com

Bonjour Bruno,
Ben ça ne marche toujours pas. hmm

La page n’est pas redirigée correctement
Firefox a détecté que le serveur redirige la demande pour cette adresse d’une manière qui n’aboutira pas.
La cause de ce problème peut être la désactivation ou le refus des cookies.

Voici ce que j'ai dans les deux fichiers:
Pour le http:

<VirtualHost *:80>

        ServerAdmin     admin@domaine.com
        ServerName      domaine.com
        ServerAlias     www.domaine.com

        Redirect permanent / https://www.domaine.com

        DocumentRoot    /var/www/domaine.com

        <Directory      /var/www/domaine.com>

                AllowOverride   All
                Allow from all
                Require all granted

        </Directory>

</VirtualHost>

Pour le https:

<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerAdmin     admin@domaine.com
        ServerName      domaine.com
        #ServerAlias     www.domaine.com

        DocumentRoot    /var/www/domaine.com

        <Directory      /var/www/domaine.com>

                AllowOverride   All
                Allow from all
                Require all granted

        </Directory>

        RewriteEngine on
        RewriteCond %{HTTP_HOST} !^(www).domaine.com$
        RewriteRule ^(.*) https://www.domaine.com/$1 [QSA,L,R=301]

SSLCertificateFile /etc/letsencrypt/live/domaine.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domaine.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Il y a t-il une erreur qui ferait un loop?

Dernière modification par oliver2004 (Le 10/04/2017, à 17:42)


Bureaux: Ubuntu Serveur Edition 18.04.4 LTS, Kubuntu, Xubuntu sur portables 18.04 LTS ou 20.04 LTS
Déjà 13 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#11 Le 11/04/2017, à 08:09

bruno

Re : Forcer www et https://

La première redirection doit être sans le www sinon effectivement il y a boucle de redirection) et avec un / terminal :

        Redirect permanent / https://domaine.com/

Tu as bien rechargé la configuration d'Apache après modification ?

sudo service apache2 reload

Remarque : la solution de bobe devrait fonctionner si elle est modifiée ainsi :

<VirtualHost *:80>
    ServerName domaine.com
    ServerAlias www.domaine.com
    Redirect / https://domaine.com/
</VirtualHost>
<VirtualHost *:443>
    ServerName domaine.com
    ServerAlias www.domaine.com
    Redirect / https://www.domaine.com/
</VirtualHost>

Dernière modification par bruno (Le 11/04/2017, à 08:10)

En ligne

#12 Le 11/04/2017, à 17:38

bobe

Re : Forcer www et https://

Salut bruno,

Je n'ai pas compris en quoi ma solution créait une boucle de redirection. Tu peux détailler ?
Je précise que ma solution impliquait un 3e virtualhost spécifiquement pour www.domaine.com:443.

Dans ta dernière réponse, ne va t-on pas justement se retrouver avec une boucle ?

Hors ligne

#13 Le 11/04/2017, à 18:03

bruno

Re : Forcer www et https://

Je reprend mon explication.

Je fais une requête sur http://domaine.com. Elle est prise en charge par l'hôte virtuel sur le port 80 qui redirige vers https://www.domaine.com. C'est l'hôte virtuel sur le port 443 qui prend en charge cette nouvelle requête et qui redirige à nouveau vers https://www.domaine.com et fait donc une boucle de redirection. Si tu n'est pas convaincu je t'invite à tester wink

Et contrairement à ce que j'ai indiqué en #11, il y a aura toujours une boucle de redirection :
Si on fait une requête vers https://www.domaine.com, elle est prise en charge par l'hôte virtuel sur le port 433 qui redirige vers https://www.domaine.com = boucle


Du coup ceci devrait effectivement fonctionner (mais cela commence à être tordu) :

<VirtualHost *:80>
    ServerName domaine.com
    ServerAlias www.domaine.com
    Redirect / https://domaine.com/
…
</VirtualHost>
<VirtualHost *:443>
    ServerName domaine.com
    Redirect / https://www.domaine.com/
…
</VirtualHost>
<VirtualHost *:443>
    ServerName www.domaine.com
   …
</VirtualHost>

En ligne

#14 Le 12/04/2017, à 08:03

oliver2004

Re : Forcer www et https://

bruno a écrit :

La première redirection doit être sans le www sinon effectivement il y a boucle de redirection) et avec un / terminal :

        Redirect permanent / https://domaine.com/

Tu as bien rechargé la configuration d'Apache après modification ?

sudo service apache2 reload

Remarque : la solution de bobe devrait fonctionner si elle est modifiée ainsi :

<VirtualHost *:80>
    ServerName domaine.com
    ServerAlias www.domaine.com
    Redirect / https://domaine.com/
</VirtualHost>
<VirtualHost *:443>
    ServerName domaine.com
    ServerAlias www.domaine.com
    Redirect / https://www.domaine.com/
</VirtualHost>

Bonjour, j'ai testé et effectivement, ça a l'air de marcher mais il y a quelques erreurs.
Quelques exemples:
Tappé sur la barre d'adresse, ça donne:
domaine.com -> https://www.domaine.com <- ok
www.domaine.com -> https://www.domaine.com <- ok
https://domaine.com -> https://www.domaine.com// <- je ne comprends pas pourquoi les deux slahes apparaissent ici?
du coup https://domaine.com/un_dossier me donne https://www.domaine.com//un_dossier <- avec toujours ces 2 slashes mais la page est curieusement chargée
Par contre, un www.domaine.com/un_dossier me donne un 404, ici -> https://domaine.comun_dossier <- le slash n'est plus entre domaine.com et le reste de l'adresse et il n'y a pas eu de redirection vers le www.
Bizarre non?


Bureaux: Ubuntu Serveur Edition 18.04.4 LTS, Kubuntu, Xubuntu sur portables 18.04 LTS ou 20.04 LTS
Déjà 13 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#15 Le 12/04/2017, à 08:33

bruno

Re : Forcer www et https://

Avec ma solution ou celle de bobe ?

En ligne

#16 Le 12/04/2017, à 18:22

oliver2004

Re : Forcer www et https://

bruno a écrit :

Avec ma solution ou celle de bobe ?

Bonjour bruno,
Avec la tienne.
J'ai mis ça:
pour le http port 80:

<VirtualHost *:80>

        ServerName      domaine.com
        ServerAlias     www.domaine.com
        ServerAlias     *.domaine.com

        Redirect permanent / https://domaine.com

   </VirtualHost>

et pour le https por 443:

<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerName      domaine.com
        ServerAlias     www.domaine.com
        ServerAlias     *.domaine.com

        RewriteEngine on
        RewriteCond %{HTTP_HOST} !^(www).domaine.com$
        RewriteRule ^(.*) https://www.domaine.com/$1 [QSA,L,R=301]

SSLCertificateFile /etc/letsencrypt/live/domaine.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domaine.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Et ça me fait ce que j'ai posté dans le post précédent

Dernière modification par oliver2004 (Le 15/04/2017, à 19:16)


Bureaux: Ubuntu Serveur Edition 18.04.4 LTS, Kubuntu, Xubuntu sur portables 18.04 LTS ou 20.04 LTS
Déjà 13 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#17 Le 12/04/2017, à 20:57

bruno

Re : Forcer www et https://

Redirect permanent / https://domaine.com/

Pour les doubles /, il faudrait voir si tu n'as pas une autre règle de réécriture quelque part.

Dernière modification par bruno (Le 12/04/2017, à 20:58)

En ligne