фильтрация REQUEST_FILENAME в mod_rewrite для RewriteCond - PullRequest
0 голосов
/ 29 марта 2011

Сначала простой вопрос. Если этого не сделать, я опубликую вопрос в поисках альтернативного решения.

В двух словах, мне нужен какой-то способ построения пути к отфильтрованному файлу для проверки RewriteCond.

Например, я хочу использовать этот URL: /images/photos/gallery/beach.jpg/unique-identifier.jpg/width:50;height:50, чтобы проверить, существует ли этот файл: /images/__resized/photos/gallery/beach.jpg/unique-indentifier.jpg.

Чтобы все усложнить, если этот файл изображения не может быть найден, мне нужно передать полный URL-адрес скрипту изменения размера, который генерирует изображение с измененным размером и, наконец, отправляет заголовок перенаправления, указывающий на полный URL-адрес.

Пожалуйста, спросите, если вам нужно больше деталей. Я оставил некоторые намеренно, поскольку английский не является моим родным языком, и я чувствовал, что добавление дополнительных деталей усложнит понимание того, что я пытаюсь сделать:)

1 Ответ

0 голосов
/ 29 марта 2011

Во-первых, это правило проверяет, соответствует ли имя файла вашему конкретному формату.Затем проверьте, существует ли файл (добавив __resized и пропустив последнюю часть).Если он НЕ существует, он вызовет resizer.php:

RewriteCond %{REQUEST_URI} ^images/(.*)/width:[0-9]+;height:[0-9]+
RewriteCond %{DOCUMENT_ROOT}/images/__resized/%1 !-f
RewriteRule (.*) resizer.php

Нет необходимости указывать какие-либо параметры GET для сценария изменения размера, поскольку он может получить доступ к исходному URL in $_SERVER['REQUEST_URI'].

Вы явно не упомянули, но я думаю, что если такой файл существует, вы хотите отправить его пользователю.

RewriteCond %{REQUEST_URI} ^images/(.*)/width:[0-9]+;height:[0-9]+
RewriteCond %{DOCUMENT_ROOT}/images/__resized/%1 -f
RewriteRule (.*) /images/__resized/%1
...