Question

J'ai un répertoire en dehors de la racine Web qui est utilisé pour stocker les images téléchargées à partir d'un système d'administration distinct. Les images sont stockées dans ce format:

filepath/writable/images/00/00/23/65/filename-236581.jpg

(où la racine Web est chemin_fichier / html)

... par exemple. Ici, 236 est l’ID de l’image dans la base de données et le système de fichiers est divisé en répertoires numérotés pour empêcher l’utilisation de plus de 100 inodes dans un seul répertoire.

Je souhaite pouvoir accéder à ces éléments à partir du serveur Web frontal, comme suit:

http://(server)/filename-236581.jpg

Où nom_fichier est une chaîne optimisée pour l'optimisation de la référencement, identique à celle du nom du fichier réel.

Je peux demander à mod-rewrite de réécrire l'URL afin qu'elle contienne les répertoires numérotés supplémentaires, et alias de rediriger la demande vers le répertoire / enregistrable / images, mais je ne peux pas faire les deux en même temps. Si je mets à la fois les directives alias et mod_rewrite, il ignore celui-ci et le journal des erreurs se plaint de ne pas trouver le chemin du fichier / html / images-téléchargées.

Voici ce que j'ai jusqu'à présent:

RewriteRule ^(.*)\/([^\/]*)-([0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/00/00/00/00/$2-$3.$4 [L,NC]

... et ainsi de suite jusqu'à:

RewriteRule ^(.*)\/([^\/]*)-([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/$3$4/$5$6/$7$8/$9$10/$2-$3$4$5$6$7$8$9$10$11$12.$13 [L,NC]

alias /uploaded-images "filepath/writable/images"

Retirer le [L] ne fait aucune différence.

Était-ce utile?

La solution

Le [L] signifie dernier.

Ce que vous devez vraiment utiliser également est le drapeau [PT] pour indiquer que le chemin résultant de votre règle de réécriture doit être transmis au gestionnaire suivant, qui dans votre cas est la directive alias.

Comme la balise [PT] implique également la balise [L], vous n’avez plus besoin de [L] aussi.

Autres conseils

Que [L] vous avez après le RewriteRule signifie "Dernier"

Pour être honnête, j’ai pensé que cela signifiait seulement que d’autres lignes RewriteRule seraient ignorées, mais cela pourrait valoir la peine d’être vérifié.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top