Forum Linux.général Redirection Apache2 par ip

Posté par  .
Étiquettes : aucune
0
30
jan.
2009

Bonjour à tous,

Je souhaiterai rediriger des clients sur un site web de production alors qu'ils arrivent par inadvertance sur le site de pré-production.

Dans les lignes plus bas, les personnes autorisées à accéder au site de validation (appelé VABF.NET) sont connues par leurs ip fixes. Toute autre ip doit être redirigées vers le site de prod appelé VSR.COM.

Bien qu'aillant cherché dans les pages des documentation d'Apache2, je suis actuellement dans une impasse car ma configuration ne fonctionne. Voici un des derniers exemple de configuration que j'ai appliqué mais en vain.


# Fichier de conf Apache2 du site VABF.NET

# VABF: site de validation d'une application web. Ne doit être accessible que par l'équipe repartie sur le territoire par des ip spécifiques.
# VSR.COM: site de production pour les clients
# Rediriger automatiquement tous les clients (qui ne devraient pas utiliser le site de validation) vers le site de production.


< Location /vabf >
order deny,allow
deny from all
#### allow from all ??? ###

RewriteEngine on
RewriteLogLevel 3
RewriteLog /var/log/apache2/rewrite.log

# User A (paris nord). ip 82.x.y.z
RewriteCond %{REMOTE_ADDR} !^82\.x\.y\.z

# User B (Lyon sud). ip 193.x.y.z
RewriteCond %{REMOTE_ADDR} !^193\.x\.y\.z [OR]

# User C (designer). ip 88.x.y.z
RewriteCond %{REMOTE_ADDR} !^88\.x\.y\.z [OR]

RewriteRule .* http://www.VSR.COM/

< /Location>


Pourriez vous m'aider ?
Par avance, merci.

Bruno.
  • # rewrite rule

    Posté par  . Évalué à 1.

    Bonjour,

    et comme ça ?

    RewriteEngine On
    RewriteCond %{REMOTE_ADDR} !^good_ip$
    RewriteRule ^(.*)$ http://www.vsr.com/ [R,L]
  • # Mod_rewrite

    Posté par  (site web personnel) . Évalué à 2.

    Deux choses
    - le [OR] doit apparaitre entre 2 conditions (décaler les OR vers le haut)
    - tu as une erreur de logique tes conditions sont négatives, donc tu ne veux pas un ou mais un et : si c'est pas A ET si c'est pas B alors il n'est pas autorisé
  • # Version corrigée

    Posté par  (site web personnel) . Évalué à 1.

    RewriteEngine on

    # User A (paris nord). ip 82.x.y.z
    RewriteCond %{REMOTE_ADDR} ^82\.x\.y\.z$ [OR]
    # User B (Lyon sud). ip 193.x.y.z
    RewriteCond %{REMOTE_ADDR} ^193\.x\.y\.z$ [OR]
    # User C (designer). ip 88.x.y.z
    RewriteCond %{REMOTE_ADDR} ^88\.x\.y\.z$

    #Redirection sur l'url demandée
    RewriteRule ^(.*)$ http://www.vsr.com/$1 [R=302,QSA,L]

    Le R=302 c'est pour indiquer une redirection temporaire, QSA pour passer les paramètres GET et L pour last rule

    • [^] # Re: Version corrigée

      Posté par  . Évalué à 1.

      Bonjour à tous,

      Ca ne fonctionne tjrs pas même en essayant sur une seule ip (celle de ma gateway).

      serveur apache sur 10.20.0.1
      gateway 10.20.0.14

      pc linux 192.168.2.10 -> routeur 192.168.2.1 -> gw 10.20.0.14 -> apache 10.20.0.1

      ip dans les logs access d'apache: 10.20.0.14
      donc, j'ai mis une règle simple pour tester:

      _____________________________________________
       < Location /vabf> 
      order deny, allow
      deny from all
      RewriteCond %{REMOTE_ADDR} ^10.20.0.14$
      #Redirection sur l'url demandée
      RewriteRule ^(.*)$ http://www.google.fr/$1 [R=302,QSA,L]
      allow from all
       < /Location > 
      _____________________________________________
      Résultats:
      init rewrite engine with requested uri /vabf/index.html
      pass through /vabf/index.html

      Logiquement avec cette règle, lorsque je demande le http://10.20.0.1/vabf je devrais être redirigé vers google mais en vain

      Dans le doute, j'ai échapé la regex par:
      ^10\.20\.0\.14$
      Tjrs pareil.

      Aucune erreur de chargement de module n'est visible dans les log error.log ni même dans le fichier rewrite.log

      Bien que j'ai augmenté le niveau de logs, ils ne sont pas très explicites.

      Je suis vraiment dans une impasse et je ne comprends pas malgrès le temps passé à lire les doc. Je ne vois pas l'erreur.

      Si vous avez une idée, je suis prenneur. Merci encore à tous.
      • [^] # Re: Version corrigée

        Posté par  (site web personnel) . Évalué à 2.

        Première chose a faire :
        1. Vire le < Location /vabf >< /Location >, ils ne te servent a rien
        2. pose directement dans le virtualhost ou la config apache les lignes suivantes :
        RewriteEngine on
        RewriteRule ^(.*)$ http://localhost/$1 [QSA,L]

        Redémarre apache

        Teste si ça tombe quelque part (a priori c'est ton < location > qui dois poser soucis)

        Ensuite si tu es bien redirigé, met les règles suivantes :

        RewriteEngine on

        RewriteCond %{REQUEST_URI} ^/vabf
        RewriteRule ^(.*)$ http://localhost/$1 [QSA,L]

        Si encore une fois ça marche tu ajoutes les ips...

        RewriteEngine on

        RewriteCond %{REQUEST_URI} ^/vabf
        RewriteCond %{REMOTE_ADDR} ^w\.x\.y\.z$ [OR]
        RewriteCond %{REMOTE_ADDR} ^a\.b\.c\.d$
        RewriteRule ^(.*)$ http://localhost/$1 [QSA,L]

        A priori le REMOTE_ADDR ne dois en aucun cas être une ip de classe locale (sauf vpn), mais l'ip publique de la machine cible.
        • [^] # Re: Version corrigée

          Posté par  . Évalué à 1.

          Bonjour à tous,

          je vais tester cette config sur un serveur de test isolé pour ne pas mettre la pagaille en pre-prod et je vous ferais un retour. D'ors et déjà, merci à tous d'avoir pris du temps pour me répondre.

          P.S: le REMOTE_ADDR est une ip publique.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.