Кто научит меня скрывать прямой урл файла - получит приз!

12 3
humbert
На сайте с 16.03.2006
Offline
540
3025

Умные головы, подскажите, как скрывать урл файла для скачивания, не грузя при этом сервак.

Т.е. есть файл, примерно 200Мб, его надо отдать пользователю, но при этом не грузя сервер и не показывая прямую ссылку.

До этого пользовал отдачу файла скриптом, но он сильно грузит сервер.

За подробное объяснение и помощь в реализации даю дорген в подарок.

Парсинг прайс-листов, наполнение интернет-магазина товаром. (https://humbert.ru) Любая CMS (Битрикс, OpenCart, Prestashop и даже Woo Commerce )
AP
На сайте с 18.05.2008
Offline
25
#1

хм... насчет грузить сервак не знаю но можно через mod_rewrite скрывать настоящий.

[Создание скриптов и сайтов на заказ] PHP/XML/MySQL/JavaScript/AJAX/ООП/Smarty/etc ICQ 950-954
psylosss
На сайте с 23.12.2005
Offline
126
#2

1. Поставить nginx, если не стоит

2. Прописать в настройках nginx'a замену пути к файлу (как в mod_rewrite). Как это сделать - по ссылке в п.1

Такое решение не грузит сервер и скрывает реальный путь к файлу.

Веб-разработка. Сложные проекты. Проектирование. Проект-менеджмент. Стартапы.
S2
На сайте с 07.01.2008
Offline
611
#3

А в чём проблема собственно? Можно ведь файл залить на фтп. Затем сделать кучу ссылок на 1-н файл и задать подстановку в зависимости от времени суток например. Скажем по числу минут в сутках. Посетитель вводит цифры каптчи и получает ссылку - соответствующую текущей минуте, соответственно у него минута чтобы её нажать - не нажал придётся сутки ждать:) Ну и перенаправлять ссылки не соответствующие текущему времени на морду сайта, например.

Не надо приписывать мне свои выводы, я имею ввиду только то, что написал. Лучшая партнёрка по футболкам/толстовкам (http://partnerka.kolorado.ru/?ref=1921540) Опрос: Проверить текст на уник - как? (/ru/forum/495885)
humbert
На сайте с 16.03.2006
Offline
540
#4

Str256, как генерировать ссылку я знаю. Мне нужен механизм отдачи файла по генерированной ссылке.

psylosss, у меня проблема в том, что скрипт, использующий алгоритм сокрытия ссылки, будет пользоваться разными людьми и не у всех есть возможность nginx поставить.

ArtPetrov, каким образом? При условии, что таких файлов будет и 20.000 и больше.

Сейчас примерно так работает.

Header("Content-type: application/force-download");

Header("Content-disposition: attachment; filename=".$file);
@readfile($file1);
V
На сайте с 21.04.2008
Offline
131
#5

Вам нужно вообще скрыть ссылку на файл, или только до того момента, как пользователь перейдет по ссылке?

V
На сайте с 09.02.2004
Offline
75
#6

У нас несколько дистрибутов по 100-300Мб.

Сейчас отдаем скриптом, но это порядочно грузит очень приличный сервак.

ngnix не помог.

Когда кто-нибудь ставит качалку, то сервак просто вешается.

Единственный выход, чтобы не грузить - отдавать по ftp.

Как создать веб-страницу? Видео-уроки научат (http://sozdaniestranic.ru). Торопитесь! http://sozdaniestranic.ru (http://sozdaniestranic.ru)
humbert
На сайте с 16.03.2006
Offline
540
#7

Valo, ссылку вообще скрыть (заменить, подменить), чтобы не виден был полный путь до файла.

V
На сайте с 09.02.2004
Offline
75
#8

Через mod_rewrite? Он обычно на каждом хостинге есть

AP
На сайте с 18.05.2008
Offline
25
#9

.htaccess содержит:

RewriteEngine On

RewriteRule ^(.*)$ index.php?url=$1 [L]

index.php получает url.

А если вам для файлов то сделайте условие определенное чтобы все ссылки какие прут например на load/article/Asdhkhkq4234/dfg.rar давали rar/dfg.rar

RewriteRule ^load/article/(.*)/(.*)$ rar/$2 [L]

так по идеи

V
На сайте с 09.02.2004
Offline
75
#10
humbert:
Str256, как генерировать ссылку я знаю. Мне нужен механизм отдачи файла по генерированной ссылке.

psylosss, у меня проблема в том, что скрипт, использующий алгоритм сокрытия ссылки, будет пользоваться разными людьми и не у всех есть возможность nginx поставить.

ArtPetrov, каким образом? При условии, что таких файлов будет и 20.000 и больше.

Сейчас примерно так работает.

Header("Content-type: application/force-download");

Header("Content-disposition: attachment; filename=".$file);
@readfile($file1);

Это, кстати, настоящая дыра. В качестве значения $file ставим "/etc/passwd" и получаем список всех пользователей на серваке. Не супер

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий