redirection – Sam & Max http://sametmax.com Du code, du cul Wed, 30 Oct 2019 15:34:04 +0000 en-US hourly 1 https://wordpress.org/?v=4.9.7 32490438 Redirection 307 et 308 http://sametmax.com/redirection-307-et-308/ http://sametmax.com/redirection-307-et-308/#comments Mon, 16 Jun 2014 00:20:14 +0000 http://sametmax.com/?p=10575 subir une mise à jour. Oui, LE standard HTTP 1.1. La fameuse RFC2616, qui n'a pas été touchée depuis l'année de sortie de The Matrix (coïncidence ? Je ne pense pas...). Bref, qu'est-ce qui change ?]]> Le standard HTTP 1.1 vient de subir une mise à jour.

Oui, LE standard HTTP 1.1. La fameuse RFC2616, qui n’a pas été touchée depuis l’année de sortie de The Matrix (coïncidence ? Je ne pense pas…).

Bref, qu’est-ce qui change ?

Essentiellement la forme, qui permettra à la RFC de HTTP 2.0 de faire référence à des parties de celle de la HTTP 1.1, maintenant divisée en 8, et évitera de se répéter.

Le web ne va donc pas casser.

Mais il y a quand même intronisation officielle de la redirection 308, qui est à la 301 ce que la 307 est à la 302.

Je me doute que ça vous parle autant qu’un personnage de film de Charlie Chaplin en fond d’écran d’un Windows avec driver realtek.

Pour rappel, quand un serveur HTTP répond à un client, il lui renvoie un code pour indiquer la nature de sa réponse. Quand tout va bien, c’est 200, quand la page n’est pas trouvée, c’est le fameux 404, quand le serveur est en erreur, c’est une 50x, etc.

Quand le serveur renvoie un code 30x, c’est généralement une redirection : on dit au client, ce que tu cherches est ailleurs, et le client, recevant ce code, fait donc une seconde requête, sur la nouvelle adresse.

Le code 301 indique une redirection permanente, ce qui signifie que le client peut considérer que c’est la nouvelle adresse qui remplace l’ancienne, pour toujours.

Le code 302 indique une redirection temporaire, généralement on utilise ça pour orienter le client sur le site à la suite d’une action, comme la saisie d’un formulaire.

Mais ces deux codes ont une particularité : le client effectue une simple requête GET vers la nouvelle adresse. Si vous avez fait une requête complexe avant, par exemple une requête POST avec plein de paramètres, le client va se rediriger avec une nouvelle requête GET basique, toute l’information précédente est perdue.

Cela peut être ce que l’on veut. Mais parfois, on souhaite que le client fasse la redirection avec une copie exacte de la requête initiale.

C’est ce que fait le code 307 : une redirection temporaire, mais avec la même requêtes. C’est comme la 302, donc, mais répète la même requête deux fois.

Le code 308 demande aussi une redirection en répétant la requête, mais une redirection permanente, comme la 301.

C’est ce dernier qui a été ajouté officiellement au protocole, puisqu’il est déjà supporté par la plupart des navigateurs : même IE le comprends depuis 2008.

(le support est vraiment aléatoire, voir comments)

Par curiosité, vous pouvez tester la redirection ici.

]]>
http://sametmax.com/redirection-307-et-308/feed/ 9 10575
Nginx – Redirection url si le fichier n’existe pas avec try_files http://sametmax.com/nginx-redirection-url-si-le-fichier-nexiste-pas-avec-try_files/ http://sametmax.com/nginx-redirection-url-si-le-fichier-nexiste-pas-avec-try_files/#comments Thu, 28 Jun 2012 20:18:55 +0000 http://sametmax.com/?p=1060 Rediriger une url lorsque le fichier n’existe pas sur le serveur peut être très utile si vous décider de changer touts vos formats de fichier de jpeg à png ou formats videos de flv à mp4 etc.

Par exemple vous décidé de convertir toutes les videos de votre serveur de flv à mp4, vous lancez un script de conversion à la volée et vous vous retrouver avec du flv et du mp4, vous pouvez modifier votre script php, python, etc pour tester si la video est en flv ou mp4 ou le faire directement au niveau de nginx qui a une fonction pour: try_files.

Dans votre config nginx server:

server {
     # Serve videos for web
        location ~ (.*)\.flv$ { 
                try_files $uri $uri/ $1.mp4?$args;
                flv; # http flv module
        }

        location ~ (.*)\.mp4$ {  
                mp4; # http mp4 module
        }
}

nginx va tester l’url de la video flv, si il ne la trouve pas il redirige l’url appelée mais avec l’extension mp4 cette fois-ci, $args est pour rajouter les éventuels arguments venant après la requête de l’url (ex: ?start=213424)

Cette astuce m’a permis entre autre de convertir à chaud 50 000 videos sur un serveur pendant que celui-ci était en prod tout en gardant les vidéos disponibles aux public et ce sans changer le script de mon site, juste en 3 lignes de conf nginx.

]]>
http://sametmax.com/nginx-redirection-url-si-le-fichier-nexiste-pas-avec-try_files/feed/ 5 1060