2 votes

Utilisation des variables d'environnement Apache pour définir un ErrorDocument personnalisé

J'ai un ensemble de règles RewriteCond qui testent les différents appareils mobiles et définissent des variables d'environnement telles que "env=device :.iphone" ou "env=device :.smartphone" si l'agent utilisateur correspond à un appareil iPhone ou Android.

J'essaie maintenant de rediriger l'utilisateur vers des pages d'erreur serveur 404/500 personnalisées pour chaque appareil, par le biais des pages d'erreur.

Idéalement, j'aimerais pouvoir tester la présence d'une variable, puis écrire une chaîne ErrorDocument personnalisée. Mais un apache ne semble pas fonctionner dans ce cas.

Avez-vous une idée de la façon dont je peux construire des tests if/else dans un fichier de configuration apache pour les variables d'environnement ?

3voto

Raif Atef Points 818

Depuis la version 2.3 d'Apache, vous pouvez utiliser les constuctions IF. C'est décrite dans la documentation d'Apache .

1voto

Shane Madden Points 112034

ErrorDocument ne permet pas de conditionner quoi que ce soit, mais il effectue une redirection interne.

Vous devriez être en mesure d'accomplir cela avec mod_rewrite :

ErrorDocument 404 /normal_404.html

RewriteEngine on
RewriteCond %{ENV:device:.iphone} 1
RewriteRule ^/normal_404.html$ /iphone_404.html [L]

0voto

anthony-dandrea Points 143

D'autres réponses disent que vous devriez être en mesure d'utiliser les fonctionnalités d'Apache 2.3. <If> mais ne donne pas d'exemple et n'explique pas la syntaxe. Voici comment vérifier une variable d'environnement, puis définir un document d'erreur personnalisé en fonction de celle-ci dans .htaccess :

<If "reqenv('device') == 'iphone'">
     ErrorDocument 404 /error_pages/404.iphone.html
</If>

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X