VirtualHost : redirection 301 KO

WRInaute accro
Bonjour,

J'avais mis en place des redirections via VirtualHost pour transférer http => https sur mon VPS debian 8. ça fonctionnait parfaitement sauf que là, j'ai remis à nu ma distribution pour passer sur debian 9 (stretch) [Apache version 2.4.25] et ainsi activer le http/2. Tout fonctionne comme je le souhaite sauf ma redirection !
Je m'explique:
- http://monsite.fr = status 200, pas de redirection ?!
- http://www.monsite.fr vers https://www.monsite.fr = status 301, redirection OK !

Voici mon code:
Code:
<VirtualHost *:80>
DocumentRoot "/var/www/html/xxxxx/xxxxx"
ServerName xxxxx.fr
<Directory "/var/www/html/xxxxx/xxxxx">
allow from all
AllowOverride All
</Directory>
ErrorLog /home/xxxxx/logs/e_xxxxx.log
LogLevel warn
CustomLog /home/xxxxx/logs/a_xxxxx.log combined
ServerAlias www.xxxxx.fr
#
RewriteEngine On
RewriteRule (.*) https://www.xxxxx.fr%{REQUEST_URI} [L,R=301] 
#
</VirtualHost>
Biensûr, pas d'erreurs dans les logs, ça serait trop facile :(
J'ai vidé le cache, etc... et je teste sur un site tiers : http://www.redirection-web.net/
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 :(

Merci de votre aide.
 
Guest
Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Pour l'instant, inspirez vous de ce code, je cherche pour votre problème. Ce code retire le www en 301, je vous en fais un avec le contraire
 
Dernière édition:
Guest
Code:
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$ [OR]
RewriteCond %{HTTP_HOST} !^www.exemple.com$
RewriteRule ^(.*) https://www.exemple/$1 [QSA,L,R=301]

c'est bon pour moi et vous ? redirect http vers https et sans www vers www le tout en full 301
 
WRInaute accro
Bonjour Lionel,
Merci pour le temps que tu as pris pour me répondre.
J'ai tout essayé mais rien... que dalle !
C'est vraiment étrange parce que je passe par le virtualhost sur le port 80 donc pas la peine de se prendre la tête à écrire une condition RewriteCond puisque tout est à envoyer en 301 vers la version https. Mais rien n'est fait ?! :(
Même:
Code:
RedirectMatch permanent ^/(.*)$ https://www.monsite/$1

Après contrôle, j'ai toujours:
-http://www.monsite ok vers -https://www.monsite
-http://monsite => KO, pages blanche en status 200
 
Guest
Bonjour Lionel,
Merci pour le temps que tu as pris pour me répondre.
J'ai tout essayé mais rien... que dalle !
C'est vraiment étrange parce que je passe par le virtualhost sur le port 80 donc pas la peine de se prendre la tête à écrire une condition RewriteCond puisque tout est à envoyer en 301 vers la version https. Mais rien n'est fait ?! :(
Même:
Code:
RedirectMatch permanent ^/(.*)$ https://www.monsite/$1

Bonjour,

Au pif,

Code:
RedirectMatch permanent ^/(.*)$ http://www.monsite/$1
#Et
RedirectMatch permanent ^/(.*)$ https://www.monsite/$1

Je sais que pour le faire j'ai mis une redirection sans www vers www et une http://www vers https://www

Je l'ai fait en deux fois
 
Guest
Le principe c'est de le faire en deux fois, une pour le www et une pour le https et de respecter l'ordre ça fonctionne à 100%

J'avais le même problème.
 
Guest
:mad::mad::mad::mad::mad:

on va provoquer une erreur pour voir, colle ça bêtement en retirant ta règle ça fait l'inverse :

Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

dit moi ce que ça fait
 
Guest
Code:
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www.lionel-belarbi.fr$
RewriteRule ^(.*) http://www.lionel-belarbi.fr/$1 [QSA,L,R=301]

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

Le fait d'avoir dormi un peu m'a aidé. ça fonctionne c'est garanti à 200% j'ai testé c'est l'inverse de ce que je t'ai donné
 
Guest
non snifff, toujours pareil
Mais c'est pas possible ! je l'ai testé et approuvé, avez-vous retiré les anciennes règles de redirection ? Dommage que j'ai pas un accès ftp. je vous le règle en deux secondes votre problème ^^ Avez-vous vidé votre cache navigateur ?

C'est obligé que ça fonctionne, je l'ai testé ou alors jouez au loto car vous avez vraiment pas de chance !
 
WRInaute accro
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 :
Code:
apache2ctl -t -D DUMP_VHOSTS


Avant:
Code:
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
Code:
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 ;)

PS : Merci Lionel de ton aide
 
WRInaute accro
Un code de chez stackoverflow qui trainait dans mes favoris si cela peut faire avancer le schmilblick :) En fait il le fait en deux fois comme le disait Lionel ;)

Code:
<VirtualHost *:80>
   ServerName www.example.com

   RewriteEngine On
   RewriteCond %{HTTP:X-Forwarded-Proto} !=https
   RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
   # additional optional server config
</VirtualHost>

<VirtualHost *:80>
   ServerName example.com
   RedirectMatch permanent ^/?(.*) https://www.example.com/$1
</VirtualHost>

[EDIT]Grillé lol[/EDIT]
 
Discussions similaires
Haut