.htaccess de Redirection de page web spécifique basé sur navigateur
Je veux rediriger les visiteurs de ma page spécifique basé sur le navigateur qu'ils utilisent.
Par exemple: tous les visiteurs pourront première visite http://www.example.com/xy/abc.html.
Si le visiteur utilise firefox, il doit être redirigé vers http://www.example.com/xy/firefox.html
Si le visiteur utilise chrome, il doit être redirigé vers http://www.example.com/xy/chrome.html
Je veux en charge de l'opéra, chrome, firefox, IE, safari, navigateur et avec une redirection par défaut pour les non identifié navigateur.
L'aide de ce code? J'ai essayé de regarder et de tout ce que je trouve a un seul code de redirection pour tous les navigateur plutôt qu'un seul.
Votre aide est très appréciée. Merci.
OriginalL'auteur vinny | 2012-12-27
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le mod_rewrite est Directive RewriteCond tester la signalé nom de l'agent utilisateur. Dans une .fichier htaccess placé dans votre xy répertoire, ça ressemble à ça:
Ce sera définitivement rediriger les navigateurs qui ont de l'Opéra de quelque part dans leur chaîne de l'agent utilisateur pour opera.html. Vous pouvez trouver une bonne liste de la façon dont les agents utilisateurs s'identifient sur useragentstring.com. Vous remarquerez que de nombreuses chaînes d'agent utilisateur de réellement commencer avec "Mozilla" (en raison de certains méchants des raisons historiques), mais simplement des tests pour voir si la chaîne contient le nom du navigateur (IE est "MSIE") devrait être suffisant.
Problème est, la
HTTP_USER_AGENT
chaîne est rapporté par le navigateur, et le navigateur peut assez bien rapport de ce qu'ils veulent. L'opéra a même une option intégrée pour faire de la mascarade de lui-même comme IE ou FF. Généralement, il ya une bonne chance que le navigateur concernant la détection basée sur la chaîne de l'agent utilisateur finira par manquer, et ensuite, l'utilisateur sera ennuyé. J'aimerais vous suggérons fortement de le laisser à l'utilisateur une certaine façon à remplacer la redirection automatique.Donc, quelque chose comme ça pourrait fonctionner comme une première approche:
Le drapeau L permet de s'assurer que cette règle est le Dernier à être exécuté que passer, donc si un navigateur signale lui-même avec une chaîne de caractères contenant Firefox, Safari, MSIE et l'Opéra, la première règle de correspondance (dans ce cas l'Opéra) qui permettra de déterminer la page de destination. Cette version effectue une réorientation douce (la barre d'adresse du navigateur ne change pas). Si vous voulez un dur, R=301 redirect, assurez-vous de préciser l'URL complète de la page de destination, c'est à dire
RewriteRule ^abcd.html$ http://example.com/xy/opera.html [NC,L,R=301]
Juste pour préciser, j'ai mis en place ce code, est-ce bien vous? <br> <code> RewriteCond %{HTTP_USER_AGENT} Opéra RewriteRule ^abc.html$ opera.html [R=301] RewriteCond %{HTTP_USER_AGENT} Mozilla RewriteRule ^abc.html$ ff.html [R=301] </code> <br> une Autre question, google chrome est également utilisé Mozilla, ce qui signifie que la redirection n'est pas exact pour les utilisateurs de chrome.
Ajout d'un exemple de mise en œuvre. Semble fonctionner sur ma machine, mais assurez-vous de le tester :).
Merci ça a marché parfaitement. Vraiment reconnaissant de votre aide. Je me demandais ce que l'agent utilisateur, je dois utiliser pour Android, iPhone, Windows Phone appareils? Avez-vous une idée?
Cela dépend toujours de l'navigateur (useragentstrings.com a une liste pour les navigateurs mobiles), bien que les navigateurs ne la tendance à présenter leur plate-forme de l'UA, ainsi, vous pouvez vérifier contre juste "Android", etc. Toutefois, si vous voulez juste pour voir si l'utilisateur à l'aide d'un appareil mobile, il est préférable de vérifier le Profil ou x-wap-profil http champs d'en-tête. Voir question pour plus de détails.
OriginalL'auteur SáT