Подскажите как в .htaccess сделать перенаправление
http://site123.net/content/logo.gif
Реально нет такой директории. Но файл есть и лежит он в директории content/logo.gif в самом корне сервера (а не сайта), чтобы нелязя было обратиться напрямую к директории content.
Нужно настроить .htaccess файл так, чтобы при запросе файла logo.gif взялся файл из ../content/logo.gif, т.е. из корня сервера.
Возможно создать php скрипт, который будет через ModRewrite запускать обработчик и выдавать этот файл. Однако нужно чтобы сам сервер понимал что файл лежит в директории нижнего уровня и обращался к файлу ка бы по ссылке (при этом нагрузка на сервер не должна быть большой, как при запуске скрипта).
Если что следует пояснить - говорите.
Суть проблемы такова: идет обращение к файлу, напирмер так
Реально нет такой директории. Но файл есть и лежит он в директории content/logo.gif в самом корне сервера (а не сайта), чтобы нелязя было обратиться напрямую к директории content.
Нужно настроить .htaccess файл так, чтобы при запросе файла logo.gif взялся файл из ../content/logo.gif, т.е. из корня сервера.
Возможно создать php скрипт, который будет через ModRewrite запускать обработчик и выдавать этот файл. Однако нужно чтобы сам сервер понимал что файл лежит в директории нижнего уровня и обращался к файлу ка бы по ссылке (при этом нагрузка на сервер не должна быть большой, как при запуске скрипта).
Если что следует пояснить - говорите.
Поэтому видимо все же придется через php скрипт + mod_rewrite. Хотя может кто знает как это сделать по другому?
Простейший пример:
В файле probe.htm пишем:
Код:
define("FILES_SOURCE_DIR", "/home/account/sourceimages/");
echo (file_get_contents(FILES_SOURCE_DIR . $_GET['file']));
echo (file_get_contents(FILES_SOURCE_DIR . $_GET['file']));
В .htaccess, соответственно пишем RewriteRule ^(.*)probe_(.*)$ $1probe.htm?file=$2 , предполагая, что файлы будут вызываться URL'ом http://domain.do/probe_image.jpg Разумеется, в дирректории должен существовать файл image.jpg
Т.е. мне нужно обращаться к http://site.gde/content/image.jpg и получать выводить файл /home/account/sourceimages/image.jpg
А если уж обращение будет идти к http://site.gde/content/ то выдастся всем знакомый "404 страница не найдена". Это позволит мне защищать директории от сканирования, и в то же время получать файл только по его точному имени.
Если уж прийдется использовать PHP, то меня беспокоит следующее. Ведь запрос любого файла картинки (и других назначенных расширений) meltn вестись через скрипт - что даст хорошую (как я думаю)нагрузку на сервер. При этом перед выдачей файла будет происходить его считваение в память целиком (например все 700 Мб). Хотя я слышал о file_get_contents() который как-то другим способом выполняет вывод файла в поток. Прошу дать мне сведения о данной функции пожалуйста.
Спасибо ребята, что откликнулись. Я вам очень благодарен!
Ещё раз: по http-протоколу невозможно обратиться к файлу за корнем http-сервера. Если хочешь сделать так, как хочешь, то ложи файлы в пределах сервера, только разреши к ней доступ только серверу. И всё получится как ты хочешь без отдачи файлов скриптом.
Спасибо за совет.
А по тому, что скрипт будет отдавать файл через себя (прокачка через скрипт) - это грузит систему сильно?
Смотря что скрипт будет делать. Одно дело в поток файл выкинуть, другое если картинку GD2 будет из кусков собирать... Но нагрузка фактически одинаковая... У меня, например, на страницу GD выкидывает картинок по двадцать зараз, которые уменьшает до нужных размеров из метровых оригиналов, лепит туда логотипы из png и всё это по времени никак не больше, чем ежели готовые thumbnails выдавались браузеру прямо с диска. На нагрузку хостёры тоже не жаловались.
Я все же хочу найти менее ресурсоемкий способ, например путем создания символических ссылок (или что-то типа того). Может кто подскажет :)
Клиника как обычно...
Не ищем лёгких путей? Нужно себе же жизнь усложнить? А смысл? Можно ведь и с горки на ногах котаться - на лыжах-то и дурак сможет...:D
Поймите, что я делаю весьма сложную и важную систему, поэтому мне нужго решить данную пролему или найти другой выход. На данный момент я ищу целесообразные пути решения этой задачи, и при этом не спрашиваю о том, оправдано это решение или нет - я сам прийму такое решение
Я даже понимаю. Но выше головы не прыгнешь. Есть вещи, придуманные до нас ("всё украдено до нас" (с)) и нужно следовать им.
Я не вижу траблы в директориях внутри v-серванта. С помощью htaccess они защищаются ничуть не хуже, чем директории за его пределами.
Спасиюбо за помошь. Буду думать.