2012-03-14 20 views
7

Aquí es lo que tengo por ahora en mi .htaccess y esto debería funcionar en el futuro:.htaccess reescribir archivo de imagen al script php

RewriteEngine On 

RewriteCond %{HTTPS} !=on 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] 

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

La pregunta es:

¿cómo puedo hacer que esta reescritura /tmp/some_image.png -> /image.php?file=some_image.png

He intentado hacer mi propia regla, pero sin éxito.

Gracias.

Respuesta

13

¿Es/tmp un directorio al que puede acceder su servidor web? Espero que sea una carpeta separada/tmp y no el/tmp real del servidor, ya que sería un riesgo de seguridad.

De todos modos, si la imagen es un archivo físico, entonces usted necesita para poner esto después de su reescritura para forzar HTTPS y antes de que las condiciones de comprobar si se trata de un archivo o directorio:

RewriteRule ^/tmp/([^\.]+)\.png$ /image.php?file=$1.png [NC,L] 

Se puede comprobar si hay otras extensiones como así:

RewriteRule ^/tmp/([^\.]+)\.(png|jpg|gif)$ /image.php?file=$1.$2 [NC,L] 

O si no le importa (. todo es una imagen en la carpeta tmp Aunque yo no recomendaría este)

RewriteRule ^/tmp/(.*)$ /image.php?file=$1 [NC,L] 

Si no se trata de un archivo físico, puede colocar uno de estos al final de sus reglas.

+0

Gracias, gran respuesta! – user973254

+0

Esta regla 'RewriteRule ^/tmp/([^ \.] +) \. (Png | jpg | gif) $ /image.php?file=$1.$2 [NC, L]' no funcionará si la imagen tiene un '.' en su nombre de archivo, por ejemplo. 'file.name.jpg' –

+0

Use' RewriteRule ^/tmp/(. +) \. (png | jpg | gif) $ index.php? file = $ 1. $ 2 [NC, L] 'en caso de que quiera permitir nombres de archivo con múltiples '.' –

Cuestiones relacionadas