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 moudj . Évalué à 1.
et comme ça ?
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^good_ip$
RewriteRule ^(.*)$ http://www.vsr.com/ [R,L]
# Mod_rewrite
Posté par peck (site web personnel) . Évalué à 2.
- 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 Raphaël G. (site web personnel) . Évalué à 1.
# 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 Bruno . Évalué à 1.
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 Raphaël G. (site web personnel) . Évalué à 2.
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 Bruno . Évalué à 1.
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.