J'ai besoin d'écrire une règle de réécriture pour Nginx afin que si un utilisateur essaie d'accéder à une ancienne URL d'image:
/images/path/to/image.png
et le fichier n'existe pas, essayez de rediriger vers:
/website_images/path/to/image.png
UNIQUEMENT si l'image existe dans la nouvelle URL, sinon continuez avec le 404. La version de Nginx sur notre hôte n'a pas encore de try_files.
Veuillez ne pas utiliser à l'
if
intérieur d'un bloc de localisation. De mauvaises choses peuvent arriver.$1
devient le nom de fichier à essayer dans la directive try_files, qui est faite pour ce que vous essayez d'accomplir.Cela, OU, il suffit de le réécrire sans vérifier. Si cette image n'est pas là, vous obtiendrez de toute façon un 404.
la source
try_files
instant"), pour les futurs visiteurs venant ici, cette réponse mérite plus de votes positifs.Vous pouvez utiliser quelque chose comme ça (non testé pour votre cas spécifique):
Ce qui est fondamentalement une manière alternative d'écrire des
if
instructions imbriquées , car vous ne pouvez pas imbriquer dans Nginx. Voir ici pour référence officielle sur ce "hack".la source