Redirection d'Images - Version mobile

  • Auteur de la discussion Auteur de la discussion Zedbar
  • Date de début Date de début
Nouveau WRInaute
Salut à tous,
J'ai un petit problème avec la redirection d'images sur la version mobile de mon site alors merci d'avance.

En gros :

- Les images de mon site (php/mysql) sont dans 1 dossier http://www.xxxxx.com/administration/upload/
- La version mobile de mon site est sur un sous domaine du type http://m.xxxxx.com

Donc pour accéder aux images (à partir de la version mobile donc
smile.png
) je fais une redirection via htaccess :

Code:
RewriteRule ^http://m.xxxxxx.com/administration/upload/(.*)$ http://www.xxxxxx.com/administration/upload/$1 [QSA,L,R=301]
RewriteRule ^http://www.xxxxxx.com/administration/upload/(.*)$ http://m.xxxxxx.com/administration/upload/$1 [QSA,L,R=301]

Si je teste, la version mobile, à partir de mon ordi fixe (Firefox, Explorer, Safari), les images des articles apparaissent bien.
Mais si je teste sur mon mobile (Iphone 7 ou autres), les images n'apparaissent pas ! D'ailleurs lorsque j'analyse la version mobile de mon site avec Google Page Speed, il détecte bien l'erreur concernant ces images...

J’en déduis que cela vient de ma redirection, mais je ne vois pas quoi faire ! Cela peut-il provenir de mon hébergeur ?

Merci de votre aide
smile.png

@plus
Zedbar
 
WRInaute impliqué
Ton système a l'air assez bizarre. Normalement, il n'y a pas de raison de faire des 301.
C'est quoi le principe de ce que tu as fait, au juste ? J'imagine que tu n'as pas ces deux lignes à la suite ?
 
Nouveau WRInaute
Merci Spout pour le prefixe mais j'avais déjà essayé ;)

A Colonies, dans mon .htaccess, ne concernant cette redirection, il n'y a en effet que ces 2 lignes.
Le reste concerne l'url rewritting, la compression, la redirection d'anciennes url et un "script" pour rediriger les visiteurs concernés vers le site mobile...

<ifmodule mod_rewrite.c="">
RewriteEngine On
RewriteRule (.*)\.(css|js|xml|txt|)$ /media.php?file=$1.$2 [L]
</ifmodule>
AddType x-mapp-php5 .php
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

ErrorDocument 404 /404.php
RewriteRule ^videos/([A-Za-z0-9-]+)/?$ videos-new.php?titre_encoded=$1 [NC,L,QSA] # Soluce2
RewriteRule ^videos$ medias.php [NC,L] # Sante1

RewriteRule ^contacts$ contacts.php [NC,L]
RewriteRule ^conditions-generales$ conditions-generales.php [NC,L]
RewriteRule ^equipe$ equipe.php [NC,L]

Redirect permanent http://motocross-history.com/ http://www.motocross-history.com
RewriteRule ^en/([A-Za-z0-9-]+)/?/([A-Za-z0-9-]+)/?/([A-Za-z0-9-]+)/?$ article-new-en.php?type_encoded=$1&theme_encoded=$2&titre_encoded=$3 [NC,L] # Redir4
RewriteRule ^([A-Za-z0-9-]+)/?/([A-Za-z0-9-]+)/?/([A-Za-z0-9-]+)/?$ article-new.php?type_encoded=$1&theme_encoded=$2&titre_encoded=$3 [NC,L] # Redir3
RewriteRule ^([A-Za-z0-9-]+)/?/([A-Za-z0-9-]+)/?$ theme.php?type_encoded=$1&theme_encoded=$2 [NC,L] # Redir2
RewriteRule ^([A-Za-z0-9-]+)/?$ type.php?type_encoded=$1 [NC,L,QSA] # Redir1

Redirect 301 /anecdote.php http://www.motocross-history.com/anecdote
Redirect 301 /edito.php http://www.motocross-history.com/edito
Redirect 301 /historique.php http://www.motocross-history.com/historique
Redirect 301 /portrait.php http://www.motocross-history.com/portrait
Redirect 301 /cross-inter.php http://www.motocross-history.com/cross-inter

RewriteCond %{HTTP_USER_AGENT} "ipod|iphone|android|palm|googlebot-mobile" [NC]
RewriteRule (.*) http://m.motocross-history.com/ [R=301,L]

RewriteRule ^http://m.xxxxxx.com/administration/upload/(.*)$ http://www.xxxxxx.com/administration/upload/$1 [QSA,L,R=301]
RewriteRule ^http://www.xxxxxx.com/administration/upload/(.*)$ http://m.xxxxxx.com/administration/upload/$1 [QSA,L,R=301]

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 year"
</IfModule>

Le site n'ayant aucun but commercial ou autres, je me permets de préciser le lien :
http://m.motocross-history.com

Or si vous testez le site :
- A partir d'un ordi (ou Tablette), pas de problème, les images dynamiques (requètes php) sont présentes
- Mais à partir d"1 Iphone (ou Android, etc...), les images ne s'affichent pas

Si vous avez une idée ? je suis preneur :)
 
WRInaute impliqué
C'est normal que tu ne voies pas tes images, tu redirige tout vers la home de ton site avec :
RewriteRule (.*) http://m.motocross-history.com/ [R=301,L]
Tu voulais mettre
RewriteRule (.*) http://m.motocross-history.com/$1 [R=301,L]
Non ? Parce que là, toutes les images sont remplacées par ta home (qui n'est pas une image, donc... rien).

Je ne sais pas ce que tu voulais faire avec :
RewriteRule ^http://m.xxxxxx.com/administration/upload/(.*)$http://www.xxxxxx.com/administration/upload/$1 [QSA,L,R=301]
RewriteRule ^http://www.xxxxxx.com/administration/upload/(.*)$http://m.xxxxxx.com/administration/upload/$1 [QSA,L,R=301]
... peut-être que tu t'es arrêté en cours, mais en l'état ça ressemble à :
— si url d'image mobile, redirige vers l'image desktop
— si url d'image desktop, redirige vers l'image mobile
... ça devrait donner des redirections infinies.

Sinon, au niveau HTML :
- tu pourrais essayer d'avoir directement les bonnes URL d'images, ça t'éviterait des paquets de redirection qui sont lentes, surtout sur mobile
- Ta classe CSS wrapper a des dimensions. Vire-les ainsi que la règle d'overflow. Là tu as un site version iPhone premier du nom jusqu'au SE, en 320 de large même sur iPhone 8 Plus, même en mode paysage.
- tu as des appels à jQuery, mais sans jQuery => bug
- ta balise HTML devrait être <html lang=fr> et non <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
- en bas de page, tu as un <script language="JavaScript">. Tu sais que l'attribut language est déprécié depuis HTML 4 ? Ça fera 20 ans l'année prochaine (1999) :)

Bon, les derniers c'est pas très grave, mais tu as un doctype HTML5, une balise html qui prétend que ça va être du XHTML, et un bout de rémanence de HTML 3.2 qui a perduré jusqu'à HTML 4... c'est assez étrange comme cocktail.
 
Nouveau WRInaute
Merci pour ces précieux conseils :)

Par contre pour les images, j'ai toujours le même problème avec ton code modifié ?
Ce que je n'arrive pas à m'expliquer c'est pourquoi on voit les images sur Ordi et pas sur smartphone...

Côté HTML (et php), ma requète est toute simple, je requête les images dans le dossier du site principale : :
Code:
<img src="http://www.motocross-history.com/administration/upload/'.$img.'" alt="'.$titre.'" title="'.$titre.'" id="mainpict"></a>

Merci de tes lumières :)
 
WRInaute impliqué
Côté HTML (et php), ma requète est toute simple, je requête les images dans le dossier du site principale : :
Code:
<img src="http://www.motocross-history.com/administration/upload/'.$img.'" alt="'.$titre.'" title="'.$titre.'" id="mainpict"></a>

Tu devrais plutôt utiliser un chemin relatif :
Code:
<img src="/administration/upload/'.$img.'" alt="'.$titre.'" title="'.$titre.'" id="mainpict"></a>
Comme ça, les images seront chargées depuis le même domaine que la page qui les appelle.


Pour tes redirections mobiles, par rapport à ton code du premier message, remplace :
Code:
RewriteCond %{HTTP_USER_AGENT} "ipod|iphone|android|palm|googlebot-mobile" [NC]  
RewriteRule (.*) http://m.motocross-history.com/ [R=301,L]

RewriteRule ^http://m.xxxxxx.com/administration/upload/(.*)$http://www.xxxxxx.com/administration/upload/$1 [QSA,L,R=301]
RewriteRule ^http://www.xxxxxx.com/administration/upload/(.*)$http://m.xxxxxx.com/administration/upload/$1 [QSA,L,R=301]
Par :
Code:
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC]
RewriteRule ^$ http://m.motocross-history.com/ [L,R=302]

RewriteCond %{HTTP_USER_AGENT} "!(android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos)" [NC]
RewriteRule ^$ http://www.motocross-history.com/ [L,R=302]
Adapté de : https://www.howtoforge.com/apache2-...al-web-site-based-on-device-using-mod_rewrite

Comme ça tu rediriges bien les mobile vers la version mobile, et les desktop vers la version desktop (si quelqu'un a partagé un lien depuis la version mobile et que quelqu'un clique dessus depuis un ordi, par exemple).
Les 301 ne sont pas adaptées, car ça n'est pas une URL qui a changé, en réalité : deux pages existent bel et bien, et on en change selon le navigateur. Par conséquent, il faudrait aussi ajouter :
Code:
Header append Vary User-Agent
Pour signifier que le contenu renvoyé n'est pas le même en fonction du navigateur.
 
Nouveau WRInaute
J'ai tout essayé, en vain :(

Avec ton codage, j'ai un message d'erreur du type "Impossible d'afficher la page, il y a trop de redirections..."
J'ai aussi essayé : sans htaccess, le htaccess avec uniquement tes 2 lignes de code...etc...

Concernant le chemin relatif (ou absolu), sauf erreur de ma part mon hébergeur ne permet pas l'usage d'un chemin absolue entre 1 nom de domaine et un sous domaine.
C'est pourquoi les liens pour les images (dynamiques) sont avec un chemin absolue : <img src="http://www.motocross-history.com/administration/upload/XXX.jpg">

D'ailleurs, même la version mobile, vue à partir d'un ordi, n'affiche pas les images avec : <img src="../administration/upload/XXX.jpg">...

(Ce qui pourtant est en contradiction avec mes scritps de connexion à la bdd. Ils sont du type : require "../administration/infos/new.php";)

On arrive toujours au même problème :
- si on teste http://m.motocross-history.com à partir d'un ordi fixe, les images (dynamiques) s'affichent bien
- si on test http://m.motocross-history.com à partir d'un mobile, les images (dynamiques) ne s'affichent pas

Si tu as une autre idée ? :)
Merci.
 
Discussions similaires
Haut