2010-10-07 2 views
0

La configuration j'est la suivante:mod_rewrite et les variables d'environnement serveur

J'ai un serveur Apache agissant en tant que moteur de réécriture d'URL (SERVER1).

J'ai un deuxième serveur (Apache aussi) qui exécute une application web (SERVER2). D'abord essaie d'authentifier les utilisateurs. Une partie du protocole d'authentification implique beaucoup de redirection entre ce serveur d'application et le serveur d'authentification. Mon problème est que, une fois l'authentification réussie, le serveur d'authentification doit rediriger l'utilisateur vers le serveur d'application, qui n'est visible que depuis le SERVEUR1. En effet, SERVER2 doit être capable de reconstruire une URL basée sur les paramètres de SERVER1. La plupart des variables d'environnement sont utiles, je connais le nom d'hôte, le nom du script, la page etcc mais je ne peux pas savoir si l'appel a été fait via HTTP ou HTTPS: cette information est effacée dans le processus de réécriture par SERVER1 ...

Tout le monde sait si/comment je peux obtenir cette information à travers des variables d'environnement? Je suis limité en ce que je ne peux pas utiliser les paramètres de chaîne de requête ...

Merci à tous!

Répondre

1

Cela peut sembler étrange, mais j'ai trouvé une partie de la réponse à ma question.

Le moteur de réécriture (au moins dans Apache 2, je n'ai regardé nulle part ailleurs) permet d'écrire un en-tête de requête supplémentaire.

La règle devrait ressembler à ceci.

RewriteRule * - . [E = INFO_PATH_INFO% {} PATH_INFO, NE]

Mettez simple, il crée un nouvel en-tête appelé INFO_PATH_INFO et définit la valeur à PATH_INFO. (Pour plus d'informations, consultez http://www.askapache.com/htaccess/crazy-advanced-mod_rewrite-tutorial.html)

Ensuite, il peut être récupéré dans toutes les langues. Pour info j'utilise Oracle OWA qui ajoute une couche supplémentaire de complication en raison du fait que les variables d'environnement par défaut sont limitées à quelques variables supplémentaires et doivent être spécifiées dans thr dads.conf

Espérons que cela aidera n'importe qui !