2012-03-14 21 views
7

Oto co mam teraz w moim .htaccess i to powinno działać w przyszłości:.htaccess przepisać plik obrazu do skryptu 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] 

pytanie brzmi:

Jak mogę zrobić to przepisać /tmp/some_image.png -> /image.php?file=some_image.png

Próbowałem stworzyć własną regułę, ale bez powodzenia.

Dzięki.

Odpowiedz

13

Czy katalog/tmp jest dostępny dla twojego serwera? Mam nadzieję, że jest to osobny folder/tmp, a nie rzeczywisty/tmp serwera, ponieważ stanowiłoby to zagrożenie dla bezpieczeństwa.

W każdym razie, jeśli obraz jest plik fizyczny to trzeba umieścić to po przepisanie wymusić HTTPS i przed warunki sprawdzenie czy jest to plik lub katalog:

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

Można sprawdzić innymi rozszerzeniami jak dobrze:

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

Lub jeśli nie obchodzi (. Wszystko jest obraz w tmp folderu Choć nie polecam tego)

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

Jeśli nie jest to plik fizyczny, możesz umieścić dowolne z nich na końcu swoich zasad.

+0

Dzięki, wielki odpowiedź! – user973254

+0

Ta reguła 'RewriteRule ^/tmp/([^ \.] +) \. (Png | jpg | gif) $ /image.php?file=$1.$2 [NC, L]' nie zadziała, jeśli obraz ma '.' w nazwie pliku np. 'file.name.jpg' –

+0

Użyj' RewriteRule ^/tmp/(. +) \. (png | jpg | gif) $ index.php? file = $ 1. $ 2 [NC, L] 'na wypadek, gdy chcesz zezwolić nazwy plików z wieloma '.' –