Как заставить htaccess проверять наличие файла по пути, который надо получить(путь) после распаршивания урла mod rewrite?
Извиняюсь, если вопрос звучит путано, но прочитав разъяснение ниже Вы поймете о чем идет речь.
Есть файл в собственном движке .htaccess
######################
RewriteEngine on
DirectoryIndex index.php
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule [%,a-zA-Z0-9/-/+/()]+[.]{1}[php|html?] index.php
# если картинка, то мод реврайт кидает на скрипт,
# обрабатывающий изображения RewriteRule ximage/[a-zA-Z\_\-0-9\/]+[.]{1}[jpg|jpeg?] ximg.php
######################
Суть его в том, что если при обращении на хостинг по пути:
он перекидывает запрос на ximg.php.
А ximg.php делает ресайз изображения 1600 на 1600 (разумеется, цифры могут быть любыми, поддерживаемыми скриптом)
Сам скрипт в зависимости от параметров делает изображению ресайз или кроп.
Но проблема вот в чем.
Он всегда проверяет кеш, и если он есть, то отдает его средствами PHP!
header('Content-type: ' . $mime);
if ( !is_file($_SERVER['DOCUMENT_ROOT'] . $output) ) {
$file = resize($input, $_SERVER['DOCUMENT_ROOT'] . $output, $h, $w, $ext);
} else {
readfile($_SERVER['DOCUMENT_ROOT'] . $output);
}
Что очень сильно увеличивает нагрузку на сервер.
Можно ли проверку на существования файла повесить на .htaccess и сделать так, чтобы он не обращался к скрипту, если файл есть на сервере.
Альтернативным решением будет заголовок, заставляющий кешировать изображение на 2 дня с момента его создания. Но хотелось бы именно средствами Apache (mod_rew) принимать решение о выдаче кешированной картинки.
Спасибо, что дочитали до этого места =)
Для интересующихся привожу сам скрипт (надеюсь кому-то будет полезен, но учтите, что у него нет защиты от перебора высоты):
давно не работал с .htaccess, а если просто проверить перед правилом есть такой файл или нет и пути совпадают или различаются?
Т.е. когда скрипт нарезает он реально ложит по адресу:
{host}/ximage/1600/1600/upload/models/07871915a8107172b3b5dc15a6574ad3.jpg ?
# если картинка, то мод реврайт кидает на скрипт,
# обрабатывающий изображения
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ximage/[a-zA-Z\_\-0-9\/]+[.]{1}[jpg|jpeg?] ximg.php