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

перезапись не работает с символическими ссылками

Мы хотим подавать изображение, поскольку 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>

Что говорит ваш журнал перезаписи?