Pregunta

Tengo un directorio fuera del webroot que se usa para almacenar imágenes cargadas desde un sistema de administración separado. Las imágenes se almacenan en este formato:

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

(donde el webroot es filepath / html)

... por ejemplo. Aquí, 236 es la ID de la imagen en la base de datos, y el sistema de archivos se divide en directorios numerados para evitar que se usen más de 100 inodos dentro de un directorio.

Quiero poder acceder a estos desde el servidor web front-end, así:

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

Donde filename es una cadena seo-optimizada, igual que el nombre del archivo real.

Puedo obtener mod-rewrite para reescribir la URL de modo que contenga los directorios numerados adicionales, y puedo obtener un alias para redirigir la solicitud al directorio de escritura / imágenes, pero no puedo hacer ambas cosas al mismo tiempo. Si pongo las directivas alias y mod_rewrite, ignora el alias y el registro de errores se queja de que no puede encontrar filepath / html / uploaded-images.

Esto es lo que tengo hasta ahora:

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

... y así sucesivamente, hasta:

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"

Eliminar la [L] no hace ninguna diferencia.

¿Fue útil?

Solución

La [L] significa último.

Lo que realmente necesita usar también es el indicador [PT] para indicar que la ruta resultante de su regla de reescritura debe pasar al siguiente controlador, que en su caso es la directiva de alias.

Como la etiqueta [PT] también implica la etiqueta [L], ya no necesita [L] también.

Otros consejos

Eso [L] que tiene después de RewriteRule significa " Último "

Para ser honesto, creía que esto solo significaba que se ignorarían más líneas RewriteRule, pero podría valer la pena echarle un vistazo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top