Как получить ресурс с помощью php-скрипта?
-
21-09-2019 - |
Вопрос
Я пытаюсь сделать следующее в своем веб-приложении:
<img src="static.example.com/image01.jpg?width=300&height=300" />
Возможно ли, чтобы мой сервер (я использую Apache в среде общего хостинга) запускал PHP-скрипт при доступе к файлу .jpg (или любому выбранному мной типу файла) вместо простого обслуживания файла?
Я знаю, что PHP-скрипт должен устанавливать правильные заголовки и т.д., мне просто интересно, как его можно запустить в первую очередь.
Я знаю, что это можно сделать следующим образом :
<img src="static.example.com/get_image.php?name=image_01.jpg&width=300&height=300" />
но это не так, как я хотел бы, чтобы это было.
Решение
Вы могли бы использовать mod_rewrite при условии, что вы находитесь в подкаталоге, или это все, что вы будете делать другие static.example.com.
Добавьте что-то вроде этого в ваш .htaccess в этом подкаталоге.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{query_string} ^height=([^&]+)&width=([^&]+)
RewriteRule (.*\.jpg|.*\.png|.*\.gif) controller.php?name=$1&height=%1&width=%2
</IfModule>
Редактировать:Попробуйте то, что описано выше.Как и все остальное, непроверенное...:)
Порядок получения параметров становится важным.
test.jpg?height=100&width=120
должно превратиться в
controller.php?name=test.jpg&height=100&width=120
Другой подход состоял бы в том, чтобы заставить apache обслуживать файл .jpg в качестве php-скриптов для этого каталога.Просто загляните в свой httpd.conf или php.conf и найдите .php .Найдите эту директиву и продублируйте ее в
<Directory>
для .jpg.На самом деле я никогда не пробовал это для одного каталога, но в конечном счете это было бы быстрее, чем маршрут mod_rewrite .
Что - то вроде:
<Files *.jpg>
SetOutputFilter PHP
SetInputFilter PHP
</Files>
AddType application/x-httpd-php .jpg