Назад | Перейти на главную страницу

Разобрать файл и перенаправить из файла конфигурации Apache

Это, без сомнения, нет, но есть ли у кого-нибудь опыт чтения и перенаправления запроса в 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 также может быть переменной.