2012-12-27 16 views
6

Desidero reindirizzare i visitatori alla mia pagina specifica in base al browser utilizzato..htaccess Reindirizzare a una pagina Web specifica basata sul browser

Ad esempio: tutti i visitatori visitano per la prima volta http://www.example.com/xy/abc.html.

Se il visitatore sta usando Firefox, egli possa essere reindirizzata a http://www.example.com/xy/firefox.html

Se il visitatore utilizza Chrome, dovrebbe essere reindirizzato a http://www.example.com/xy/chrome.html

voglio gestire questo per Opera, Chrome, Firefox, IE, browser safari e con un reindirizzamento predefinito per browser non identificato.

Qualsiasi aiuto con il codice? Ho provato a cercare e tutto quello che ho trovato era un singolo codice di reindirizzamento per tutti i browser piuttosto che uno specifico.

Il vostro aiuto è apprezzato. Grazie.

risposta

11

È possibile utilizzare mod_rewrite's RewriteCond directive per verificare il nome riportato dell'agente utente. In un file .htaccess posizionato nella directory xy, che sarebbe simile a questa:

RewriteCond %{HTTP_USER_AGENT} Opera 
RewriteRule ^abc.html$ http://example.com/xy/opera.html [R=301] 

Ciò reindirizzare in modo permanente i browser che hanno Opera da qualche parte nella loro stringa user agent a opera.html. È possibile trovare un elenco decente di come gli agenti utente si identificano su useragentstring.com. Si noterà che molte stringhe di user-agent in realtà iniziano con "Mozilla" (a causa di alcuni malvagi motivi storici), ma semplicemente testando per vedere se la stringa contiene il nome del browser (IE è "MSIE") dovrebbe essere sufficiente.

Il problema è che la stringa HTTP_USER_AGENT viene segnalata dal browser e il browser può riportare praticamente tutto ciò che desidera. Opera ha anche un'opzione integrata per renderlo mascherato come IE o FF. Generalmente, ci sono buone probabilità che lo sniffing del browser basato sulla stringa dell'agent user finisca per perderlo, e quindi l'utente sarà seccato. Ti suggerisco caldamente di lasciare all'utente la possibilità di sovrascrivere il reindirizzamento automatico.


Quindi, qualcosa di simile potrebbe funzionare come un primo approccio:

RewriteEngine on 

RewriteCond %{HTTP_USER_AGENT} Opera 
RewriteRule ^abcd.html$ opera.html [NC,L] 

RewriteCond %{HTTP_USER_AGENT} MSIE 
RewriteRule ^abcd.html$ ie.html [NC,L] 

RewriteCond %{HTTP_USER_AGENT} Chrome 
RewriteRule ^abcd.html$ chrome.html [NC,L] 

RewriteCond %{HTTP_USER_AGENT} Safari 
RewriteRule ^abcd.html$ safari.html [NC,L] 

RewriteCond %{HTTP_USER_AGENT} Firefox 
RewriteRule ^abcd.html$ firefox.html [NC,L] 

RewriteRule ^abcd.html$ default.html [L] 

The L bandiera fa in modo che questa regola è l'ultimo ad essere eseguito in quel passaggio, quindi se un browser stesso report con una stringa contenente Firefox, Safari, MSIE e Opera, quindi la prima regola da abbinare (in questo caso Opera) determinerà la pagina di destinazione. Questa versione esegue un reindirizzamento software (la barra degli indirizzi del browser non cambia). Se desideri un reindirizzamento difficile, R = 301, assicurati di specificare l'intero URL della pagina di destinazione, ad esempio RewriteRule ^abcd.html$ http://example.com/xy/opera.html [NC,L,R=301]

+0

Grazie. In realtà non sono molto preoccupato se fallisce per alcuni utenti. Non aspettarsi davvero una soluzione di lavoro al 100%, ma qualsiasi cosa vicina all'85% dovrebbe andare bene. – vinny

+0

Giusto per chiarire, ho messo insieme questo codice, questo ti sembra a posto?
RewriteCond %{HTTP_USER_AGENT} Opera RewriteRule ^abc.html$ opera.html [R=301] RewriteCond %{HTTP_USER_AGENT} Mozilla RewriteRule ^abc.html$ ff.html [R=301]
Un altro problema, Chrome utilizzato anche Mozilla, il che significa che il reindirizzamento non sarebbe accurato per gli utenti di Chrome. – vinny

+0

Aggiunta un'implementazione di esempio. Sembra funzionare sulla mia macchina, ma assicurati di testarlo :). –

Problemi correlati