Rediretion domaines avec Apache

Bonjour à tous,

j’ai généré mes certificats avec let’s encrypt et j’ai fais la redirection dans Apache pour que ca force en https:

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.domain.org [OR]
RewriteCond %{SERVER_NAME} =domain.org
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

comment je peux procéder pour rediriger domain.fr www.domain.fr et test.domain.fr si c’est possible sur le https://www.domain.org

j’ai changé les DNS ok mais je me retrouve à surfer sans le certificat :confused:

Merci

C’est-à-dire ?

A mon avis il faut faire trois choses :

  • configurer le DNS pour que les noms de domaine pointent vers l’adresse du serveur ;
  • ajouter les certificats pour ces noms de domaine (avec SNI) sur le serveur ou les inclure dans le certificat installé (sans SNI) en tant qu’alternate name ;
  • écrire des règles de réécriture d’URL pour rediriger ces domaines vers https://www.domain.org

je surf sans certificat donc sans SSL
les DNS sont bons c’est redirigé sur l’ip externe du serveur.
par contre il faut un certificat par domaine meme si ca re dirige ? Je pensais pouvoir rediriger sur le SSL principal un certain nombres de domaine…

Ça ne marche pas comme ça. C’est SSL qui implique l’usage de certificats et non l’inverse. Si l’URL final est HTTPS, alors SSL et un certificat sont utilisés. Si l’URL final est HTTP, alors il n’y a aucune raison d’utiliser SSL ni un certificat.
Que se passe-t-il exactement ?

Ça dépend si le serveur et le client utilisent SNI ou non. SNI est une extension de TLS/SSL qui permet au client d’indiquer au serveur le nom du site demandé avant la négociation TLS/SSL (qui a elle-même lieu avant l’envoi de la requête HTTP contenant le nom du site dans la connexion sécurisée), ce qui permet au serveur de présenter le certificat correspondant. Avec SNI, on peut donc avoir un certificat indépendant par site. Sans SNI, le serveur ne peut présenter qu’un seul et même certificat qui doit donc contenir tous les les sites servis en HTTPS.

donc je dois créer plusieurs vhost ? let’s encrypt ne gere pas les multi noms dans le vhost

Oups, j’efface tout et je recommence.

Si les URL de départ sont en http, alors pas de SSL et pas besoin de certificat pour ces domaines. Il devrait falloir juste les enregistrements DNS et les rewrite (ou redirect dans un virtualhost qui semble plus recommandé pour les redirections HTTP vers HTTPS).

oui en fait j’ai généré un certificat pour le domaine principale en .org et j’aimerais que si un internaute tape d’autres URL en .fr .com .net ca parte automatiquement vers le .org qui lui est en SSL. Redirection automatique

Quel est le problème ?

je sais pas le faire dans le fichier de conf apache car j’ai deja un redirect vers le https comme j’ai posté en premier

Si tu as su créer cette redirection, qu’est-ce qui t’empêche de créer une autre redirection pour les autres domaines ?

j’ai ajouté :

 RewriteRule ^(.*)$ https://www.domain.org/$1 [R=301,L]

mais il me rajoute 2 // à la fin de l’URL sinon ca re dirige bien du moins pour test.domain.org

A la fin de l’URL ou entre le nom de domaine et le chemin ?
Ça ajoute un / (ce qui en fait deux, //) ou deux (ce qui en fait trois, ///) ?
Si ça ajoute un / entre le nom de domaine et le chemin, c’est ta règle qui le fait car $1 contient l’expression entre parenthèses du motif, y compris l’éventuel / initial. Pour l’exclure, il faut le traiter à part dans le motif :

^/?(.*)$

(Vu sur https://wiki.apache.org/httpd/RewriteHTTPToHTTPS)

Et l’autre ?
Tu as ajouté des RewriteCond pour les deux noms de domaine ?

a la fin de l’URL

Peux-tu répondre à toutes les questions et donner un exemple ?

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.domain.org [OR]
RewriteCond %{SERVER_NAME} =domain.org
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
RewriteRule ^(.*)$ https://www.domain.org/$1 [R=301,L]

voila ma conf

et ca quand je tape test.domain.org ca redirige bien vers https://www.domain.org mais ca ajoute un / donc je me retrouve avec l’URL : https://www.domain.org//

j’ai pas encore essayé avec d’autres domaines

Ah, cas particulier du chemin vide donc c’est à la fois à la fin du domaine et de l’URL.
Et si tu tapes un URL avec un chemin, du genre http://test.domain.org/chemin/page.html ?

Je pense qu’il faudrait aussi ajouter des RewriteCond avant le second RewriteRule pour ne rediriger que les noms de domaine voulus.

avec un chemin ca se passe bien

Pourrais-tu être plus explicite dans tes réponses, notamment en copiant (par copier/coller, pas en retapant à la main) l’URL de départ et l’URL d’arrivée ?

URL d’entrée : test.domain.org/en/bridges redirige bien sur https://test.domaine.org/en/bridges automatiquement

Curieux.
As-tu essayé de remplacer ^(.*)$ par ^/?(.*)$ comme je l’ai suggéré ?