/ / Rewrite Query String - expresiones regulares, mod-rewrite, miniaturas

Rewrite Query String - regex, mod-rewrite, thumbnails

Estoy tratando de escribir algunas reglas mod_rewrite para generar miniaturas sobre la marcha. Entonces cuando esta url

example.com/media/myphoto.jpg?width=100&height=100

el script debe reescribirlo para

example.com/media/myphoto-100x100.jpg

y si el archivo existe en el disco, Apache lo sirve y, si no existe, se llama script para generar el archivo.

yo escribí esto

RewriteCond %{QUERY_STRING}                              ^width=(d+)&height=(d+)
RewriteRule ^media/([a-zA-Z0-9_-]+).([a-zA-Z0-9]+)$    media/$1-%1x%2.$2   [L]
RewriteCond %{QUERY_STRING}                              ^(.+)?
RewriteRule ^media/([a-zA-Z0-9_-._]+)$                 media/index.php?file=$1&%1 [L]

Y obtengo redirecciones internas infinitas. La primera condición coincide y la regla se ejecuta, y justo después de eso obtengo una redirección interna.

Necesito un consejo para terminar este guión.

Gracias.

Respuestas

0 para la respuesta № 1

Intenta usar esto para tu segunda condición:

RewriteCond %{REQUEST_FILENAME} !-f

"-f" (es un archivo regular) Trata el TestString como una ruta de acceso y prueba si existe y es un archivo normal.

RewriteCond


0 para la respuesta № 2

Prueba estas reglas:

RewriteCond %{QUERY_STRING} ^width=(d+)&height=(d+)$
RewriteCond %{DOCUMENT_ROOT}/media/$1-%1x%2.$2 -f
RewriteRule ^media/([a-zA-Z0-9_-]+).([a-zA-Z0-9]+)$ media/$1-%1x%2.$2 [L]
RewriteCond $1 !=index.php
RewriteRule ^media/([a-zA-Z0-9_-]+.[a-zA-Z0-9]+)$ media/index.php?file=$1 [L,QSA]

La segunda condición de la primera regla comprueba si hay un archivo con ese nombre (-f)