Как Avalanche Imagine Bundle может работать в производственной среде?

Я пытаюсь использовать AvalancheImagineBundle и не понимаю, как это может работать в производственной среде.

По умолчанию cache_prefix — media/cache. Все кэшированные изображения будут находиться в каталоге myProject/web/media/cache, и это также маршрут Symfony2:

Name                Method   Scheme Host Path
_imagine_thumbnail  GET      ANY    ANY  /uploads/cache/{filter}/{path}

Если я проверю этот URL-адрес "http://my-project.fr/app.php/", пакет работает нормально:

  1. В первый раз я пытаюсь показать картинку /app.php/media/cache/thumbnail/profile.jpg. Маршрут Symfony2 пойман. Пакет возвращает обрезанное изображение и кэширует его.
  2. Второй раз маршрут снова ловится и бандл перенаправляет меня на закешированную картинку /media/cache/

Короче говоря, в первый раз /app.php/media/cache -> bundle, а во второй раз /media/cache -> assets

Но в производственной среде app.php отсутствует, так как же пакет может изменить ситуацию?


person Jonathan    schedule 27.04.2013    source источник
comment
Я думаю, вам следует проверить ваш .htaccess   -  person Ziumin    schedule 27.04.2013
comment
Я использую lighttpd, но я думаю, что это та же проблема. ^/media/.+ => $0, ^(/[^\?]*)(\?.*)? =› /app.php$1$2. В моем случае первого случая никогда не бывает. Правила «медиа» кэшируются перед правилом «app.php». Но если я удалю правила «медиа», у меня будет бесконечное перенаправление.   -  person Jonathan    schedule 27.04.2013
comment
Не использовал Lighthttp, но в Apache он работает так, что запрос передается на передний контроллер только в том случае, если файл не существует по заданному пути. Вот строка, которая это делает.   -  person kgilden    schedule 28.04.2013


Ответы (2)


Я не знаком с lighttpd, поэтому могу только указать направление, где искать.

«Переключение» выполняется через .htaccess, вот две соответствующие строки и объяснение:

# If request is an existing file, then it's simply returned
RewriteCond %{REQUEST_FILENAME} !-f

# Else the request is pushed to the app.php front controller
RewriteRule ^(.*)$ app.php/$1 [QSA,L]

Я думаю, что вам не хватает первой части этой конфигурации.

P.S. Обратите внимание, что app.php на самом деле не отсутствует, он просто «скрыт».

person Inoryy    schedule 29.04.2013

Опция -f не существует в lighttpd, поэтому я переключаюсь на apache2, и все работает хорошо.

person Jonathan    schedule 09.03.2014