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

  • Автор темы Автор темы RooTM
  • Дата начала Дата начала

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/
 
есть такой вот .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
 
извините, не увидел этот раздел форума)

никто не знает как реализовать?
 
Зачем это нужно? Какая первоначальная проблема решается?
 
как правильно записать это ?
PHP:
RewriteCond %/media{REQUEST_FILENAME} -f
 
RooTM
Если он создаёт - то зачем проверка? Ты так и не описал реальную проблему, которую ты пытаешься решить.
 
если все изображения отдавать через пхп скрипт, получается большая нагрузка на сервак

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

ps: подобные вопросы по этическим причинам тут не обсуждают в принципе
 
в том то и дело что запросы идут к 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
 
Ну и пусть твой скрипт сохраняет в папку media. Как вообще логика работы твоего скрипта связана с мод_реврайтом? Нужно чтобы сохраняло в медию - напиши скрипт который сохраняет в медию. М?
 
сохранять в media не проблема $media_dir = ROOT_DIR . '/media'; :) можете просто сказать как правильно записать это RewriteCond %/media{REQUEST_FILENAME} !-f ? возможно ли?
 
RooTM
Эх... Я же попросил описать задачу - зачем это нужно (потому что ты её 99% решаешь неправильно). Попросил трижды.

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

можете просто сказать как правильно записать это
Т.е. тебе всё равно чем забивать гвозди, головой или микроскопом? Может всё таки молотком?
 
Cпасибо,сам уже понял как реализовать :)
PHP:
RewriteCond %{DOCUMENT_ROOT}/media/%{REQUEST_URI}  -f
 
RooTM
Ну как хочешь :-)
Можно было сделать по-нормальному (я более чем уверен, что есть лучшее и правильное решение), но ты предпочёл делать через задничку. Выбор твой :-)
 
Сверху