htaccess pour iphone, ipod, ipad et les concurrents

M

Membre supprimé 2

Invité
Bonjour,

Je viens de lire cet article, je suis chez OVH et voici le message d'erreur quand je me connecte depuis mon ipad.

" Safari cannot open the page because too many redirects occured".

Je souhaiterais inclure l'environnement Apple mais aussi la concurrence (blackberry, android, webos, etc…)

Actuellement, j'ai une solution qui marche bien pour l'environnement Apple en Javascript.

Bloc de code:
<script language=javascript>
if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)))
{
location.replace("iphone");
}
else if(navigator.userAgent.match(/iPad/i))
{
location.replace("ipad");
}
</script>

Mais dès lors que je rajoute "logiquement" Android par exemple, iPad n'est plus redirigé vers le dossier ipad.

Mon code qui bug:

Bloc de code:
<script language=javascript>
if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)))
{
location.replace("iphone");
}
else if(navigator.userAgent.match(/iPad/i))  || (navigator.userAgent.match(/Android/i)))
{
location.replace("ipad");
}
</script>

Si vous avez une solution Htaccess ou JS qui marche pour tous les environnements précités, je suis preneur.

Bien à vous,
Tumb
 

bidouillos

Membre confirmé
26 Octobre 2011
14
0
Bonjour,

Pourquoi javascript ? PHP ne serait pas une meilleur solution ? Ensuite il devrait être possible de faire sa avec le mod_rewrite d'Apache il me semble, un truc du genre :

Bloc de code:
RewriteEngine on

RewriteCond %{HTTP_USER_AGENT} ^.*iphone [NC,OR]

RewriteCond %{HTTP_USER_AGENT} ^.*nokia [NC,OR]

RewriteCond %{HTTP_USER_AGENT} ^autre-agent-utilisateur-mobile

RewriteRule (.*)  http://m.domaine.com/$1  [QSA,L]

Et si tu veux vraiment utiliser javascript pourquoi ne pas definir une taille de viewport précise ?
Bloc de code:
if(screen.width <= 640 {
var lien_css = document.createElement('link');
lien_css.href = "mobile.css";
......;
......;
document.getElementByTagName("head")[0].appendChild(lien_css);
}

PHP me semble être la meilleur solution non ? :
Bloc de code:
<?php
if(strstr($_SERVER['HTTP_USER_AGENT'], 'iPhone'))
{les instructions pour iPhone }
?>
 
A

Anonyme

Invité
Sniffer les navigateurs est une très mauvaise idée : bonjour la maintenance à chaque nouvel appareil qui sort au lieu de détecter les possibilités via les média queries.

Si vraiment on veut faire une site à part, on propose à l'utilisateur de s'y rendre et on ne l'envoie pas automatiquement (c'est d'ailleurs dans les recommandations d'Apple). L'utilisateur pourra aussi revenir à la version «normale» quand il en a envie. ;)
 

bidouillos

Membre confirmé
26 Octobre 2011
14
0
Tu parle des recommandations de Apple concernant les sites mobile, tout depend des contraintes de development, et comme dit ce ne sont que des recommandations.

Les medias queries on des avantages mais aussi des inconvenient, même si c'est la solution que je prefer utiliser, mais d'autres solutions existes et non sans raisons.

Il peut très bien faire de la manière suivante en PHP :
Bloc de code:
<?php

require_once('mobile_redirect.php');

mobile_redirect(array(
"iphone"=>"http://site-iPhone.com",
"android"=>"http://site-Android.com"
));

?>
Les mises à jour seront plus difficile ou contraignantes, mais comme dit tout dépend des besoins de chacun.