Erreur redirection virtualhost debian 9

Bonjour,

Voici ma config: Debian 9, Apache 2.4.25 et php7.
Voilà, depuis que j’ai changé de vps pour passer sur debian 9, ma config du virtualhost ne fonctionne plus.
J’essaye de renvoyer tout protocole-HTTP vers protocole-HTTPS.

Voici mon VH:

<VirtualHost *:80>
DocumentRoot "/var/www/html/xxxxxxx"
ServerName xxxxxxx.fr
<Directory "/var/www/html/xxxxxxx">
allow from all
AllowOverride All
</Directory>
ErrorLog /home/xxxxxxx/logs/e_xxxxxxx.log
LogLevel warn
CustomLog /home/xxxxxxx/logs/a_xxxxxxx.log combined
ServerAlias www.xxxxxxx.fr
#
RewriteEngine On
RedirectMatch permanent ^(.*)$ https://www.xxxxxxx.fr$1
#
</VirtualHost>

Biensûr, pas d’erreurs dans les logs, ça serait trop facile :frowning:
J’ai vidé le cache, etc… et je teste les redirections sur un site tiers .
J’ai fait un “ping monsite.fr” ou “www.monsite.fr”, je suis bien sur la même IP du VPS.
Vous avez une idée parce que là… je sèche ?! Est-ce dû à une spécificité de Apache 2.4.25 ? Ou Stretch ? Bref… je cale :frowning:

En essayant -http://monsite, j’ai une page blanche répondant en status 200. Pas de redirection 301 tandis qu’avec les “www”, j’ai bien ma redirection vers le HTTPS.
Comprends pas ?!

En faisant ça sur la console, j’ai ceci:
root@xxxxxxxxx:~# apache2 --version
[Wed Jan 17 10:59:46.365105 2018] [core:warn] [pid 30879] AH00111: Config variable ${APACHE_RUN_DIR} is not defined
apache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot

C’est une installation de base, je n’ai touché à rien là dedans.

Merci de votre aide.

Ca ne me semble pas super propre de faire ça au niveau du virtualhost.
Perso, je fais le virtualhost commun port 80+443, et je met la redirection dans le .htaccess racine sous la forme suivante:

RewriteEngine On
RewriteCond %{HTTPS} off [NC]
RewriteRule (.*) https://www.ndd.tld/$1 [QSA,L,R=301]

Et accessoirement, si le référencement google est important, c’est bon aussi de redirger vers la forme canonique, par exemple, si tu veux forcer le www, ça donne:

RewriteCond %{HTTP_HOST} !^www\.ndd\.tld$ [NC]
RewriteRule (.*) https://www.ndd.tld/$1 [QSA,L,R=301]

Mais encore une fois, je n’ai jamais vu faire ça au niveau du virtualhost.

Bonjour,

Je n’ai jamais vu de crochets dans les vhost, tu es sûr que c’est censé fonctionner ? Ton vhost porte bien l’extension .conf ? Tu l’as bien activé via a2ensite www.domaine.net.conf ?

Un exemple qui marche pour moi :

<VirtualHost *:80>
        ### Redirect http -> https
        ServerName                      www.domaine.net
        RedirectPermanent       /       "https://sousdomaine.domaine.net/"
</VirtualHost>

<VirtualHost *:443>
        ServerName      sousdomaine.domaine.net
        CustomLog       ${APACHE_LOG_DIR}/sousdomaine.domaine.net_access.log combined
        ErrorLog        ${APACHE_LOG_DIR}/sousdomaine.domaine.net_error.log
        LogLevel        error

        SSLEngine               on
        SSLCertificateFile      /etc/letsencrypt/live/sousdomaine.domaine.net/fullchain.pem
        SSLCertificateKeyFile   /etc/letsencrypt/live/sousdomaine.domaine.net/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/sousdomaine.domaine.net/chain.pem

        DocumentRoot "/var/www/sousdomaine.domaine.net"

        <Directory "/var/www/sousdomaine.domaine.net">
                    allow from all
                    Options -Indexes
        </Directory>
</VirtualHost>

Personnellement je mets ce type de redirection dans le vhost parce que cela évite que les développeurs ne les voient ou les cassent.

Merci de vos réponses.
Oui j’ai mis des [] car je n’ai pas trouvé la fonctionnalité pour ajouté du code. Il me vire tous les < :wink:

faut encadrer le texte avec des triples ` (altgr+7)

J’utilise le bouton ci-dessous, mais il n’est peut être pas présent dans la version mobile… Dans l’idée, tu copies colle ton texte ici, tu le sélectionne et tu appuies sur le bouton. Sinon, la solution de @mattotop :wink:

merci c’est modifié. ça ne résout pas mon prob mais c’est plus facile à comprendre :wink:

oui : “already enabled”

yeah !!! Eurekaaaaaaaaaa !
J’ai trouvé… le truc trop con mais redoutable !
J’avais personnalisé le Nom d’hôte du Système (monVPS.ovh.net (127.0.1.1)) afin que lorsque j’envoies des mails, j’obtiens un niveau de meilleur confiance pour les serveurs de messagerie mais je n’avais pas pensé à la répercussion sur les virtualhost. En remettant le nom de mon VPS par défaut, ma config apache à logiaquement fonctionné ! Yeah baby !

En faisant sur la console :

apache2ctl -t -D DUMP_VHOSTS

Avant:

VirtualHost configuration:
*:443                  site1.fr (/etc/apache2/sites-enabled/site1.fr-le-ssl.conf:2)
*:80                   is a NameVirtualHost
         default server site1.fr (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost site1 (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost site1.fr (/etc/apache2/sites-enabled/site1.fr.conf:1) alias www.site1.fr

Après

VirtualHost configuration:
*:443                  site1.fr (/etc/apache2/sites-enabled/site1.fr-le-ssl.conf:2)
*:80                   is a NameVirtualHost
         default server monVPS.ovh.net (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost monVPS.ovh.net (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost site1.fr (/etc/apache2/sites-enabled/site1.fr.conf:1) alias www.site1.fr

ça pourra toujours servir à d’autres :wink: