Plusieurs conditions .htaccess. Comment faire?

Nouveau WRInaute
Bonjour,

J'éprouve beaucoup de difficultés pour créer les règles d'URL rewriting Apache suivantes et j'aurais besoin d'un coup de pouce :idea:

Le principe est que lorsque qu'un internaute demande l'URL http://www.mon-site.com (ou mon-site.com) avec un téléphone mobile, il est redirigé vers la page correspondante sur la version mobile (m.mon-site.com). Les pages ont le même nom MAIS toutes les pages n'ont pas d'équivalence en version mobile. Si une page n'ayant pas d'équivalence en mobile est demandée par l'internaute, il n'est pas redirigé vers la version mobile du site mais reste sur la version classique. Ceci afin d'éviter les erreurs 404.

Si l'internaute demande la version mobile (une page m.mon-site.com/...) avec un ordinateur classique, aucune redirection n'est nécessaire vu qu'il l'aura forcément fait intentionnellement.

Quelques exemples:

Ex: l'url SAISIE est http://www.mon-site.com/FR/Page-A.html (la version mobile de cette page existe)

-> On utilise un mobile
// REDIRECTION VERS: http://m.mon-site.com/FR/Page-A.html

-> On utilise un ordinateur classique
// AUCUNE REDIRECTION

Ex: l'url SAISIE est http://www.mon-site.com/FR/Page-B.html (la version mobile de cette page existe)

-> On utilise un mobile
// REDIRECTION VERS: http://m.mon-site.com/FR/Page-B.html

-> On utilise un ordinateur classique
// AUCUNE REDIRECTION


Ex: l'url SAISIE est http://www.mon-site.com/FR/Page-C.html (la version mobile de cette page n'existe pas)

-> On utilise un mobile
// AUCUNE REDIRECTION (car la page n'a pas d'équivalence en version mobile, on ne doit pas rediriger vers m.mon-site.com...)

-> On utilise un ordinateur classique
// AUCUNE REDIRECTION


Ex: l'url SAISIE est http://m.mon-site.com/FR/Page-C.html (l'internaute demande donc directement la version mobile)

-> On utilise un mobile
// AUCUNE REDIRECTION

-> On utilise un ordinateur classique
// AUCUNE REDIRECTION

Voici le contenu du .htaccess de http://www.mon-site.com que j'ai pu faire seul, il redirige bien vers la version mobile, mais pour toutes les pages demandées, or j'aimerais restreindre à certaines pages seulement (voir exemple précédent):

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*Mobile.*$
RewriteRule ^(.*)$ http://m.mon-site.com/$1 [QSA,R=301,L]
RewriteCond %{HTTP_HOST} !^www\.mon-site\.com [NC]
RewriteRule (.*) http://www.mon-site.com/$1 [QSA,R=301,L]

J'aimerais donc pouvoir rajouter le code qui permettra d'effectuer une redirection si le USER AGENT est mobile ET si la page demandée est dans une liste définie dans le .htaccess (Page-A.html et Page-B.html donc mon exemple)

Pourriez-vous m'éclairer sur la syntaxe exacte? Je galère vraiment avec Apache...

Merci :D

Damien
 
WRInaute discret
Oublie le htacess.
Sur tous pages qui existe en version mobile tu ajoutes en PHP :

<?php
$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))){
header('Location: http://m.mon-site.com'.$_SERVER['PHP_SELF']);
exit;
}
?>
 
Discussions similaires
Haut