Plusieurs variantes de cette question ont été posées, mais je n'arrive pas à trouver une réponse satisfaisante.Comment puis-je créer un Redirect temporaire dans .htaccess auquel tous les navigateurs adhèrent?
j'ajouter ce qui suit à mon fichier .htaccess
Redirect 302 /test1 /test
Ensuite, accédez au site Web. Je suis redirigé vers/test.
Ensuite, je supprime la redirection et je repasse sur le site Web. Dans Chrome, Firefox et Internet Explorer (Dernières versions le 14/04/2017), les navigateurs utilisent la redirection mise en cache et m'envoie/test. Sur Edge, j'obtiens/test1.
Comme mentionné dans d'autres questions, c'est kindof ok, par the RFC:
Since the redirection might be altered on occasion, the client SHOULD continue to use the Request-URI for future requests.
Notez que "DEVRAIT" dans la RFC lingo signifie qu'il est conseillé, mais pas obligatoire. Donc, il est conseillé pas de mettre en cache la redirection (et donc, aller à/test1), mais il est ok pour le mettre en cache de toute façon. Je ne comprends pas pourquoi les navigateurs ne suivraient pas la suggestion de RFC ici, ... mais il y a ça.
Ensuite, il y a le 303 Redirect:
The 303 response MUST NOT be cached, but the response to the second (redirected) request might be cacheable.
J'ai testé. compte tenu de la RFC, cette redirection NE DOIT PAS (comme dans jamais) être mis en cache. Edge et Firefox jouent bien ici, et ne le cache pas. Internet Explorer et Chrome semblent décider d'ignorer carrément le RFC ici, et continuer à m'envoyer à/test.
Est-ce que ces bogues sont connus?
Ai-je mal compris le RFC?
Y at-il un façon, pour s'assurer que mes redirections ne sont pas mises en cache?
La seule solution utilisant une RewriteRule? Les navigateurs ne peuvent pas mettre en cache les URL cibles, car ils ne les voient jamais et n'ont pas tendance à mettre en cache l'emplacement cible. Cela fonctionne donc pour moi. (Merci à @Olaf Dietsche)
RewriteRule ^test1 /test
(Dans mon cas d'utilisation, je veux rediriger quelque chose comme website.com/file.pdf à un autre fichier. Il n'y a pas de page HTML que je peux ajouter un no-cache paramètre. les utilisateurs tapent cette URL dans leur navigateur manuellement)
Si vous souhaitez réécrire au lieu de rediriger, consultez ['RewriteRule'] (https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule) –
Stupide (de moi;)) . En fait, j'ai réussi à travailler avec RewriteRule. J'avais l'habitude d'utiliser l'indicateur R, mais pour mon cas d'utilisation * not * l'utilisation de l'indicateur R est encore meilleure (puisque l'URL continue à chercher "bien rangé" et ne change pas dans le fichier cible). Et, les navigateurs ne le mettent pas en cache; parfait! Donc, mon problème spécifique est résolu, mais la question sur la redirection 303 reste ouverte ... – Wouter