.htaccess переписать файл изображения в скрипт php - PullRequest
7 голосов
/ 14 марта 2012

Вот что у меня есть в моем .htaccess, и это должно работать в будущем:

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]

Вопрос:

как я могу сделать это переписать /tmp/some_image.png -> /image.php?file=some_image.png

Я пытался создать свое собственное правило, но безуспешно.

Спасибо.

Ответы [ 2 ]

14 голосов
/ 14 марта 2012

Является ли / tmp каталогом, доступным для вашего веб-сервера? Я надеюсь, что это отдельная папка / tmp, а не фактическая / tmp сервера, поскольку это было бы угрозой безопасности.

В любом случае, если изображение является физическим файлом, его необходимо поместить после перезаписи, чтобы принудительно установить HTTPS, и перед проверкой условий, является ли это файл или каталог:

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

Вы также можете проверить другие расширения:

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

Или, если вам все равно (в папке tmp все изображение. Хотя я бы не рекомендовал это)

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

Если это не физический файл, вы можете поместить любой из них в конец ваших правил.

0 голосов
/ 14 марта 2012

Правильный ответ:

RewriteRule ^/?tmp/(.*\.png)$ captcha.php?file=$1 [L]

thx переходит к Humbedooh@freenode

...