web-dev-qa-db-fra.com

Apache Redirect pour le trafic interne uniquement

Nous avons une page, gateway.school.edu, où les utilisateurs doivent remplir un recaptcha avant d'être redirigés vers notre réinitialisation du mot de passe. Je souhaite que tout trafic interne, tout agent utilisateur sur notre réseau avec une adresse IP de 10., 172. ou 192. *, soit transmis sans devoir remplir le recaptcha. Ainsi, un utilisateur interne doit accéder à gateway.school.edu, où Apache vérifie la présence d’une adresse IP interne, puis l’envoie à reset.school.edu. Les utilisateurs externes devront remplir le captcha avant d'être envoyés à reset.school.edu

Est-ce possible d'utiliser {REMOTE_ADDR} dans apache? Quelque chose comme:

#gateway.school.edu virtual Host
RewriteCond %{REMOTE_ADDR} ^192.*
RewriteRule .* reset.school.edu

Y a-t-il une autre approche que je pourrais adopter pour y parvenir ou une nouvelle rédaction serait-elle le meilleur moyen? Syntaxiquement, comment définir les plages IP?

2
Ryan Jarvis

Essaye ça:

#gateway.school.edu virtual Host
RewriteCond %{REMOTE_ADDR} ^10\.(.*)$ [OR]
RewriteCond %{REMOTE_ADDR} ^172\.(.*)$ [OR]
RewriteCond %{REMOTE_ADDR} ^192\.(.*)$
RewriteRule .* reset.school.edu [R=301,L]

Le .* est un caractère générique. Le \ échappe au. qui ancre le match permettant de le prendre littéralement. Le () peut ne pas être nécessaire - il est généralement utilisé pour capturer la valeur de la correspondance de l'expression régulière dans une variable. Vous pourrez peut-être les supprimer, mais je les ai laissés pour cet exemple dans un souci de lisibilité. Le ^ correspond au début de la ligne. Le $ correspond à la fin de la ligne. Le [OR] est évident. Le [R=301,L] est une redirection 301 et dernier.

0
closetnoc