mod_rewrite — Проверка файла на наличие

RooTM

Новичок
как осуществлять проверку на наличия файла в папке media если запрос идет к файлу не в папке media . например запрос site.ws/dir1/dir2/my-img.jpg а надо задавть условия если файл существует в site.ws/media/dir1/dir2/my-img.jpg

пытался сделать так RewriteCond %/media{REQUEST_FILENAME} -f

p.s. надо чтоб не конфликтовало с этим http://phpclub.ru/talk/threads/Правило-для-mod_rewrite.71016/
 

RooTM

Новичок
есть такой вот .htaccess и надо чтоб если нет файла в папке media тогда выполнялось это RewriteRule ^(.*) index.php
PHP:
DirectoryIndex index.php

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !/media
RewriteRule .*\.(gif|png|jpg|ico|js|css)$ /media/$0

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) index.php
 

RooTM

Новичок
извините, не увидел этот раздел форума)

никто не знает как реализовать?
 

zerkms

TDD infected
Команда форума
Зачем это нужно? Какая первоначальная проблема решается?
 

RooTM

Новичок
как правильно записать это ?
PHP:
RewriteCond %/media{REQUEST_FILENAME} -f
 

zerkms

TDD infected
Команда форума
RooTM
Если он создаёт - то зачем проверка? Ты так и не описал реальную проблему, которую ты пытаешься решить.
 

RooTM

Новичок
если все изображения отдавать через пхп скрипт, получается большая нагрузка на сервак

p.s. это надо для парсера другого сайта
 

zerkms

TDD infected
Команда форума
И зачем тогда тебе проверять есть файл или нет? Апач отдаст, если файл есть. Если нет - перепишет запрос

ps: подобные вопросы по этическим причинам тут не обсуждают в принципе
 

RooTM

Новичок
в том то и дело что запросы идут к http://site.ws/dir1/dir2/my-img.png а файл находиться в /media/dir1/dir2/ . сейчас скрипт работает, но создает много папок и файлов в корневом каталоге
PHP:
        if( in_array(strtolower(end(explode(".", $_SERVER['REQUEST_URI']))), array('gif', 'png', 'jpg', 'ico', 'js', 'css')) ){ 
  
              $media_dir = ROOT_DIR;
              $dirs = explode('/',$_SERVER['REQUEST_URI']);
  
  			  for($i = 1; $i <= count($dirs)-2; $i ++) {
				    $media_dir = $media_dir . '/' . $dirs[$i];
                    if( !is_dir ($media_dir) ) mkdir($media_dir);
			  }
  
              file_put_contents($media_dir. '/' . end($dirs), $data['content'], LOCK_EX);
  
  	 
		 }
а надо чтоб сохраняло в папку media
 

zerkms

TDD infected
Команда форума
Ну и пусть твой скрипт сохраняет в папку media. Как вообще логика работы твоего скрипта связана с мод_реврайтом? Нужно чтобы сохраняло в медию - напиши скрипт который сохраняет в медию. М?
 

RooTM

Новичок
сохранять в media не проблема $media_dir = ROOT_DIR . '/media'; :) можете просто сказать как правильно записать это RewriteCond %/media{REQUEST_FILENAME} !-f ? возможно ли?
 

zerkms

TDD infected
Команда форума
RooTM
Эх... Я же попросил описать задачу - зачем это нужно (потому что ты её 99% решаешь неправильно). Попросил трижды.

Ты описал совершенно левую шнягу, совершенно не имеющую отношения к тому, что ты пытаешься сделать. Где логика?

можете просто сказать как правильно записать это
Т.е. тебе всё равно чем забивать гвозди, головой или микроскопом? Может всё таки молотком?
 

RooTM

Новичок
Cпасибо,сам уже понял как реализовать :)
PHP:
RewriteCond %{DOCUMENT_ROOT}/media/%{REQUEST_URI}  -f
 

zerkms

TDD infected
Команда форума
RooTM
Ну как хочешь :)
Можно было сделать по-нормальному (я более чем уверен, что есть лучшее и правильное решение), но ты предпочёл делать через задничку. Выбор твой :)
 
Сверху