8768 sujets

Développement web côté serveur, CMS

Bonjour, first post sur Alsacreations, merci à eux!

Développement local avec Xampp :
Je tente désespérément de mettre en place une redirection de dossier images
en fonction d'un cookie.
La réécriture d'URL type toto.php vers index.php fonctionne, mais pas la réécriture du folder. J'ai essayé d'ajouter un suffixe @2x aux fichiers images mais ça ne fonctionne pas non plus...
Auriez vous un tuyau?

Options +FollowSymLinks
	RewriteEngine on
	RewriteBase /JLF-main/Build
	RewriteCond %{HTTP_COOKIE} devicePixelRatio=[2-9]
	RewriteRule ^visuels/(.*)$  http://localhost/JLF-main/Build/assets/img/visuels2x/$1  [R=301,L]
	RewriteRule ^toto.php$ portfolio.php 
Bonsoir,

Personnellement je ne connais pas ta structure, surtout si tu utilises un framework PHP, les routes peuvent être complexe à gérer.

Néanmoins pour te schématiser les choses avec une architecture non MVC :

J'ai 2 dossiers à la racine, le premier imgs/ le second imgsBestQuality/ pour des ratios d'écran plus sympa

Ta condition semble correct c'est déjà le plus gros du travail fait.

Par contre je ne comprend pas trop pourquoi utiliser une redirection permanente dans ce cas là.

De plus je ne suis pas sûr que le .htaccess va comprendre une url de cette manière, il serait peut-être même capable de recherche un dossier http://localhost/JLF-main/Build/assets/img/visuels2x/$1 à la racine de http://localhost/

En plus tu as mis ton écriture d'url à partir de /JLF-main/Build, donc il recherche peut-être même un dossier : http://localhost/JLF-main/Build/http://localhost/JLF-main/Build/assets/img/visuels2x/$1 qui n'existe pas bien évidemment.

Si je reprend ton code avec la même condition voici ce que j'ai fais :


Options +FollowSymLinks
	RewriteEngine on
	RewriteCond %{HTTP_COOKIE} devicePixelRatio=[2-9]
	RewriteRule ^imgs/(.*)$  imgsBestQuality/$1 [L]


J'ai pas eu besoin de RewriteBase puisque je suis à la racine.

Alors bien sûr tout est à la racine, c'est plus facile , mais cela fonctionne !

Peut-être que dans ton cas cela suffirait car si je comprend bien tu rewrites en partant du dossier build avec RewriteBase /JLF-main/Build


Options +FollowSymLinks
	RewriteEngine on
        RewriteBase /JLF-main/Build
	RewriteCond %{HTTP_COOKIE} devicePixelRatio=[2-9]
	RewriteRule ^ visuels/(.*)$   assets/img/visuels2x/$1 [L]


J'espère avoir pu un peu t'aider !

Bon courage pour arriver à l'adapter pour ta structure Smiley smile
Modifié par kevinlourenco (04 Mar 2017 - 06:52)
Moultes merci beaucoup pour le coup de main, ça doit être évident à régler
mais je n'y suis toujours pas arrivé!
Je persiste néanmoins.

J'ai placé" un htaccess dans mon dossier /img où il y a également un dossier /visuels et un dossier /visuels2X, j'ai également plan" un fichier img.jpg et un fichier img@2x.jpg dans mon dossier /img, aucune des deux réécritures ne fonctionne.
Pour la redirection permanente c'est que je ne connais pas l'autre choix possible!

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_COOKIE} devicePixelRatio=[1#-9]
RewriteRule ^visuels/(.*)$ visuels2x/$1 [L]
RewriteRule ^(.*)\.(gif|jpg|png)$ $1@2x.$2
Il s'agissait d'un problème de cache!
Après redémarrage du browser et du serveur ça fonctionne :

Site monté à partir de Foundation 6.
En entête j'écris un cookie qui stocke la fonctionnalité Retina et plus :

<script>(function(w){var dpr=((w.devicePixelRatio===undefined)?1:w.devicePixelRatio);if(!!w.navigator.standalone){var r=new XMLHttpRequest();r.open('GET','/retinaimages.php?devicePixelRatio='+dpr,false);r.send()}else{document.cookie='devicePixelRatio='+dpr+'; path=/'}})(window)</script>
<noscript><style id="devicePixelRatio" media="only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)">html{background-image:url("/retinaimages.php?devicePixelRatio=2")}</style></noscript>
	</script>

Mon dossier image contient deux sous-dossiers le premier avec les images x1 et le deuxième avec les images x2, le images portent le même nom, le code suivant est mis dans un .htaccess à la racine du dossier /img.

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_COOKIE} devicePixelRatio=[2-9]
#RewriteCond %{REQUEST_FILENAME} !@2x
RewriteRule ^visuels/(.*)$ visuels2x/$1 [L]


Basique mais transparent et simple à gérer. Smiley smile

Inspiration : http://retinaimag.es et http://shauninman.com/tmp/retina/
Merci pour l'aide apportée.
Modifié par ldesmarets (08 Mar 2017 - 19:20)