Это, без сомнения, нет, но есть ли у кого-нибудь опыт чтения и перенаправления запроса в apache на основе правила конфигурации?
НАПРИМЕР:
<If "!%{REQUEST_URI} =~ m#files/cache/static/[A-Za-z_\-0-9]+.cache# && -f '/var/www/files/cache/static/%{tolower:%{REQUEST_URI}}.cache'">
#Read /files/cache/static/xyz.cache and redirect to url in contents
</If>
Мне нужно иметь возможность читать содержимое файла и перенаправлять на указанный URL.
Это позволит apache обрабатывать запрос динамического изображения вместо того, чтобы обрабатывать его через PHP.
Я уже делаю нечто подобное с HTML-страницами, и это прекрасно работает, но изображения, которые я хочу избежать "кэшированной" копии изображения, и хотел бы перенаправить на фактический файл без использования дополнительного анализатора.
ИЗМЕНИТЬ для ясности:
Пользователь 1 посещает example.com/username-128-128.jpg
Затем PHP анализирует URL-адрес и извлекает изображение нужного размера и масштаба (либо генерируя его, либо извлекая из хранилища файлов).
говорят, что реальное изображение /var/www/files/images/username/128/128/image.jpg
PHP создает имя файла "имя пользователя-128-128.jpg.cache"файл в / var / www / files / cache / static который содержит "example.com/files/images/username/128/128/image.jpg"а затем перенаправляет на фактический файл
Заголовок ("Местоположение: example.com/files/images/username/128/128/image.jpg");
Пользователь 2: запрашивает тот же файл example.com/username-128-128.jpg
Apache видит, что есть файл "/var/www/files/cache/static/username-128-128.jpg.cache"затем он читает этот файл и использует mod_rewrite для перенаправления на содержимое файла.
Чего я пытаюсь избежать, так это создания копии /var/www/files/images/username/128/128/image.jpg в / var / www / files / cache / static /
Потому что это расточительно.
Спасибо
Похоже, ваша логика обратная, но mod_rewrite может вам помочь:
RewriteMap lc int:tolower
RewriteMap nocache "txt:/files/cache/static/xyz.cache"
RewriteCond /var/www/files/cache/static/${lc:%{REQUEST_URI}}.cache !-f
RewriteRule files/cache/static/[A-Za-z_\-0-9]+.cache ${nocache:foo} [L]
Вместо того, чтобы указывать только целевой URL в /files/cache/static/xyz.cache
вам нужно будет поставить карту:
foo http://wwww.example.com/actual_file
или
foo /actual_file
foo
также может быть переменной.