Мы хотим подавать изображение, поскольку apache так хорош в этом, и когда клиент запрашивает миниатюру, запрос будет выглядеть следующим образом: [http: //host/photos/im/image_w200.jpg] (w200 - требуемая ширина эскиза).
Иногда миниатюр не существует. Когда они не существуют, мы хотим, чтобы apache перенаправлял запрос нашему приложению. Этот запрос будет иметь вид [http: // host / create_thumbnail? file = image_w250.jpg]. Приложение создаст эскиз и перенаправит обратно к исходному запросу.
Это нормально работало, когда у меня были обычные файлы и каталоги в / home / dev / x / y / mediadir. Однако / home / dev / x / y / mediadir / photos теперь является символической ссылкой на каталог / home / dev / photos. Итак, теперь, даже когда файл существует, он всегда передает! -F RewriteCond и перезаписывает миниатюру фотографии.
Вещи, которые я пробовал:
У кого-нибудь есть предложения?
<VirtualHost *:443>
#... cut ...
RewriteLog /home/dev/logs/rewrite.log
RewriteLogLevel 3
Alias /media/ /home/dev/x/y/mediadir/
<Directory /home/dev/x/y/mediadir>
Order allow,deny
Allow from all
Options FollowSymLinks
RewriteEngine on
RewriteCond photos/../$ !-f
RewriteRule ^photos/../(.+)$ https://%{HTTP_HOST}/create_thumbnail?file=$1
</Directory>
Вместо использования одного RequestCond (RewriteCond photos/../$ !-f
), Я использовал два. Первый проверяет, соответствует ли REQUEST_FILENAME регулярному выражению, а второй проверяет, что файл не существует. У меня это хорошо работает.
RewriteCond %{REQUEST_FILENAME} photos/../.+
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^photos/../(.+)$ https://%{HTTP_HOST}/create_thumbnail?file=$1
Я немного смущен вашими путями, потому что вы ссылаетесь на / mediadir, но нет / mediadir (ссылка на root; ни в файловой системе, ни в apache). Я действительно не понимаю, что вы имеете в виду, но, возможно, вы можете исправить это, добавив:
<Directory /path/to/photos/>
Order allow,deny
Allow from all
</Directory>
Что говорит ваш журнал перезаписи?