Partage
  • Partager sur Facebook
  • Partager sur Twitter

Redirection générique Apache

http://test_{quelquechose}.mondomaine.fr

    3 juillet 2020 à 1:49:41

    bonjour,

    je suis gros débutant en config Apache, surtout dans l'écriture de règle de redirection.

    Voici mon besoin, sur lequel je me casse les dents depuis quelques jours.

    sur un domaine, je dois faire une redirection générique qui renvoi "http://test_{quelquechose}.mondomaine.fr" vers le 443 "https://test_{quelquechose}.mondomaine.fr".

    le {quelquechose} n'étant pas connu d'avance.

    Ensuite, dans ma config de mon 443, il faut que je spécifie que tout ce qui arrive avec "https://test_{quelquechose}.mondomaine.fr" point vers le répertoire de mon site "/var/www/monsite"

    Merci d'avance pour votre aide, et explication.

    B. 

    • Partager sur Facebook
    • Partager sur Twitter
      3 juillet 2020 à 11:37:51

      RewriteCond %{HTTPS} !=on [NC]
      RewriteCond %{HTTP_HOST} ^test_.+\.mondomaine\.fr$
      RewriteRule ^ https://%{HTTP_HOST} [L,R=permanent]
      

      A moins de faire la même chose directement depuis la configuration d'Apache (un VH en http qui ne fait que la redirection http => https)

      > Ensuite, dans ma config de mon 443, il faut que je spécifie que tout ce qui arrive avec "https://test_{quelquechose}.mondomaine.fr" point vers le répertoire de mon site "/var/www/monsite"

      ServerAlias *.mondomaine.fr ? Dans un VirtualHost qui aurait /var/www/monsite pour DocumentRoot

      -
      Edité par julp 3 juillet 2020 à 11:38:42

      • Partager sur Facebook
      • Partager sur Twitter
        3 juillet 2020 à 13:05:53

        Bonjour,

        Merci pour ce retour.

        Du coup, j'ai bien compris ce que vous me dites, j'ai une question complémentaire au sujet de la config du 443.

        Si je dois distinguer que certains domaines doivent pointer vers ma solution en test, et d'autres vers ma solution de prod, y a t il moyen de différencier dans la config du 443?

        Merci d'avance

        • Partager sur Facebook
        • Partager sur Twitter
          3 juillet 2020 à 13:28:18

          Ca dépend ce que tu définis comme "solution de test/prod" et ce que tu entends par "distinguer" (quoi/comment).

          Sachant qu'en https, tu ne fais pas non plus forcément ce que tu veux et comme tu veux.

          -
          Edité par julp 3 juillet 2020 à 13:30:57

          • Partager sur Facebook
          • Partager sur Twitter
            3 juillet 2020 à 19:27:07

            Hum, voici ce qu'il faut que j'arrive à faire c'est :

            J'ai un site qui est en production et un site qui est en test.

            Il faut que tout ce qui arrive sur http://{quelqueschases}.mondomaine.fr soit renvoyé vers https://{quelqueschases}.mondomaine.fr

            Puis dans le https, tous ce qui commence par test_, soit envoyé vers mon site test, et le reste vers mon site prod.

            j'avais mal exprimé mon problème dans mon premier post.

            Merci

            PS : 

            julp a écrit:

            RewriteCond %{HTTPS} !=on [NC] RewriteCond %{HTTP_HOST} ^test_.+\.mondomaine\.fr$ RewriteRule ^ https://%{HTTP_HOST} [L,R=permanent] 
            Je l'ai mis en place mais ça ne fonctionne pas.

            • Partager sur Facebook
            • Partager sur Twitter
              3 juillet 2020 à 21:13:58

              Ca dépend de tellement de choses, il y a plus d'une façon de faire et certaines sont plus élégantes que d'autres notamment pour éviter la duplication.

              Est-ce qu'Apache gère lui-même https (via mod_ssl) ? Parce que si non, %{HTTPS} ne sera jamais à on.

              Comment sont gérés les sites en questions ? Qu'est-ce déjà "un site" ? Ont-ils un répertoire/racine propre ou non ? Comment sont-ils gérés ? Par des blocs VirtualHost spécifiques ou non ? Sont-ils éventuellement purement virtuels ?

              Cherches-tu à réaliser ce que tu demandes directement via la configuration d'Apache ou non (.htaccess) ?

              As-tu la possibilité de le faire des (depuis les) fichiers de configuration d'Apache ?

              A quel point les test_{quelquechose} sont ou doivent être dynamiques ? (malheureusement ServerAlias reste assez limité)

              Bref, ce serait potentiellement plus simple de partir de ta configuration actuelle si jamais tu pouvais la partager.

              -
              Edité par julp 3 juillet 2020 à 21:26:49

              • Partager sur Facebook
              • Partager sur Twitter
                4 juillet 2020 à 18:19:50

                Je peux faire ce que je veux, je suis admin du système. Jusqu'à présent je faisais de config simple directement dans les config apache.

                Le nombre de sous domaines et leur nom est piloté par une base de données d'utilisateurs. Du coup, je ne connais pas en avance le nom de domaine d'un utilisateur et je peux avoir des centaines d'utilisateurs, d'ou le fait que je ne veux pas avoir à configurer à la main chaque nouveau sous domaine.

                Ci dessous ma config de départ apache.

                <VirtualHost *:80>
                        ServerName pixli.fr
                        ServerAlias www.pixli.fr
                        Redirect permanent / https://www.pixli.fr/
                </VirtualHost>
                
                <IfModule mod_ssl.c>
                        <VirtualHost *:443>
                                ServerName www.pixli.fr
                                ServerAlias pixli.fr
                                DocumentRoot /var/www/pixli
                        </VirtualHost>
                
                </IfModule>
                

                c'est ma config de prod

                <VirtualHost *:80>
                        ServerName  test.pixli.fr
                        ServerAlias test_toto.pixli.fr
                        Redirect permanent / https://test.pixli.fr/
                </VirtualHost>
                
                <IfModule mod_ssl.c>
                        <VirtualHost *:443>
                                ServerName test.pixli.fr
                                ServerAlias test_toto.pixli.fr
                                DocumentRoot /var/www/test_pixli
                        </VirtualHost>
                
                </IfModule>
                

                Et voici ma config de test,

                Les deux étant dans le même fichier.

                En reprenant ma demande, je cherche dans un premier temps en effet à rediriger tout ce qui arrive en HTTP sur le domaine pixli.fr, vers le HTTPS.

                Et ensuite dans la config du HTTPS, distinguer ce qui doit pointer vers /var/www/pixli de ce qui doit pointer vers /var/www/test_pixli

                Merci

                • Partager sur Facebook
                • Partager sur Twitter
                  4 juillet 2020 à 18:37:30

                  Dommage que VirtualDocumentRoot ne se prête pas à ton cas de figure.

                  mod_macro pourrait cependant être intéressant dans ton cas pour réduire la duplication de contenu et avoir bien plus facile à la faire évoluer.

                  • tu génères ta configuration d'Apache à partir de cette base de données d'utilisateurs ?
                  • ils sont tous configurés strictement de la même façon ou certains ont des configurations supplémentaires et/ou particulières ?
                  • il y a une corrélation entre le nom de domaine et sa racine ? Je veux dire est ce que www.exemple.fr exemple.fr tombe forcément sur /var/www/exemple et test.exemple.fr sur /var/www/test_exemple ? Quoi que, vu que l'extension du domaine n'a pas l'air prise en compte, à moins d'héberger uniquement des .fr, la réponse ne peut être que non.

                  -
                  Edité par julp 4 juillet 2020 à 18:49:29

                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 juillet 2020 à 17:46:00

                    Bonjour,

                    voici le contexte.

                    J'ai une application web avec des comptes utilisateurs. cette application est personnalisée pour chaque utilisateur. l'un  de point de personnalisation est que l'utilisateur possède son adresse propre (ex : moi.pixli.fr). l'adresse est configurée et stockée en Base au même titre que les info des utilisateurs.

                    L'application détecte l'adresse d'entrée pour définir si l'utilisateur existe, et s'il peut utiliser l'application.

                    L'industrialisation de notre application implique que nous ne devons pas venir ajouter à chaque nouvel utilisateur son sous-domaine. Du coup, il faut que nous configurions Apache pour renvoyer tout ce qui arrive en *.pixli.fr depuis le HTTP, vers le même domaine en HTTPS.

                    Puis comme nous avons notre plateforme de test hébergé sur le même serveur que la production, il faut que dans la config du HTTPS, tout ce qui arrive préfixé test_, soit envoyé vers la solution de test, et le reste vers la solution de prod (les deux solution étant bien dans des répertoires distincts).

                    • Partager sur Facebook
                    • Partager sur Twitter
                      6 juillet 2020 à 18:27:10

                      Un truc comme ça :

                      <VirtualHost *:80>
                          ServerName www.pixli.fr
                          ServerAlias *.pixli.fr
                          DocumentRoot /var/www/pixli
                      
                          RewriteEngine on
                          RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=permanent]
                      </VirtualHost>
                       
                      <IfModule mod_ssl.c>
                          <VirtualHost *:443>
                              ServerName www.pixli.fr
                              ServerAlias *.pixli.fr
                              DocumentRoot /var/www/pixli
                      
                              RewriteEngine On
                      
                              RewriteCond %{HTTP_HOST} ^test_.+\.pixli\.fr$
                              RewriteRule .* /var/www/test_pixli/$0
                          </VirtualHost>
                      </IfModule>

                      ?

                      ServerAlias ne permet apparemment pas de faire du wildcard n'importe où. Avec nginx, ça aurait été vide plié et bien plus propre.

                      -
                      Edité par julp 6 juillet 2020 à 18:28:31

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Redirection générique Apache

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown