Forum Webscript.Ru

Программирование => Perl => Тема начата: Alex-01 от 11 Апреля 2002, 17:21:18

Название: Как сделать свою службу редиректа?
Отправлено: Alex-01 от 11 Апреля 2002, 17:21:18
Хотелось бы спросить про службы редиректа.
Неужели в службах редиректа, где тысячи пользователей,
создаются тысячи папок и DNS для доменов третьего уровня?

Вот есть такая служба http://www.inkazan.ru
Делает редирект (переадресацию) с адресов доменов
третьего уровня, например, http://www.reklama.inkazan.ru

Наверняка используются скрипты.
Как сделать подобную штуку на Perl ?

Как передается управление скрипту, и как он получает
адрес, набранный в браузере для последующей переадресации?
Название: Как сделать свою службу редиректа?
Отправлено: NeoNox от 11 Апреля 2002, 17:43:55
ИМХО здесь создание виртуальных хостов (вот здесь и может работать скрипт). А скрипт нужен только для редактирования htaccess.conf.
Название: Как сделать свою службу редиректа?
Отправлено: Alex-01 от 11 Апреля 2002, 18:02:26
К сожалению, я не понимаю, как передать скрипту данные адресной строки браузера для редиректа.
Название: Как сделать свою службу редиректа?
Отправлено: NeoNox от 11 Апреля 2002, 18:18:16
Гдето так...

#!/usr/bin/perl

$temp=$ENV{\'QUERY_STRING\'};


if ($temp ne \'\') {
@pairs=split(/&/,$temp);
foreach $item(@pairs) {
($key,$content)=split (/=/,$item,2);
$data{$key}=$content;
 }
}


if ($data{\'name\'} ne \'\') {
$name=$data{\'name\'};
print "Location:$name\\n\\n";
}else{
print "Content-type:text/html\\n\\n";
print "Запрос не верен!";
}

Переход из cgi-bin/redirect.pl?name=www.narod.ru будет осуществляться на народ ру.
Название: Как сделать свою службу редиректа?
Отправлено: Макс от 11 Апреля 2002, 18:30:44
Делаешь в настройках апача, чтобы все адреса типа third_domain.your_server.ru перенаправлялись на your_server.ru/redirect.php а в скрипте вытаскиваешь хост, из хоста вытаскиваешь имя домена и по домену определяешь куда перенаправить юзера (нужна БД в которой будут имена доменов и URL-ы куда редиректить).

ЗЫ
Я такое на php писал, с теорией могу помочь а с perl-ом нет :(
Название: Как сделать свою службу редиректа?
Отправлено: NeoNox от 11 Апреля 2002, 18:38:25
Цитировать
(нужна БД в которой будут имена доменов и URL-ы куда редиректить).

БД здесь вовсе не нужна... Зачем усложнять?
Название: Как сделать свою службу редиректа?
Отправлено: Chs от 11 Апреля 2002, 20:53:02
Цитировать
БД здесь вовсе не нужна... Зачем усложнять?

Не скажи - если редиректов будет много, то выборка из базы будет быстрее, чем скажем поиск по текстовому файлу.

P.S.:
Надо будет проверить с какого количества строк база данных с индексом становиться эффективнее чем текстовый файл.
Название: Как сделать свою службу редиректа?
Отправлено: Макс от 11 Апреля 2002, 23:03:31
могу сразу предупредить что база будет быстро разрастаться.
(я такой скрипт для ozz.ru делал и из опыта знаю, что очень многие регятся в таких системах).
К тому же если делать более-менее функциональную систему, нужно будет еще и другие данные в БД добавлять (login, password, site title ...)
Название: Как сделать свою службу редиректа?
Отправлено: Green Kakadu от 12 Апреля 2002, 03:28:57
Цитировать
Надо будет проверить с какого количества строк база данных с индексом становиться эффективнее чем текстовый файл.

;) я видел подобного рода статистику-сравнение
текстовой БД и для DBM базы.
Поначалу, текстовая раз в пять быстрее, но когда более 1000 строк начинается отставание от DBM (там как раз индексация присутствует).

+ лучше нормальную БД использовать, можно будет дополнительную статистику собирать  да и надежнее.
Название: Как сделать свою службу редиректа?
Отправлено: NeoNox от 12 Апреля 2002, 12:04:37
Цитировать
Не скажи - если редиректов будет много, то выборка из базы будет быстрее, чем скажем поиск по текстовому файлу.

Да нет же, я не о том. Можно вообще без баз обойтись. Создание папки с одним скриптом который перенаправляет пользователя (ну, можно логи еще вести, хотя зачем? итак в аксесс.лог все будет сваливаться)
Название: Как сделать свою службу редиректа?
Отправлено: Chs от 12 Апреля 2002, 12:42:55
Цитировать
Да нет же, я не о том. Можно вообще без баз обойтись. Создание папки с одним скриптом который перенаправляет пользователя...

Да мы поняли, только скрипт откуда будет данные брать? :))
Есть допустим редирект - la-la-la.redirect.ru, в конфиге прописан редирект на redirect.ru/cgi-bin/redirect.pl?from=la-la-la.
И куда редиректить? Т.е. какой-то минимальный набор данных должен быть.
Название: Как сделать свою службу редиректа?
Отправлено: NeoNox от 12 Апреля 2002, 12:44:14
Цитировать
Да мы поняли, только скрипт откуда будет данные брать?

в нем самом эти данные и будут... :)
Название: Как сделать свою службу редиректа?
Отправлено: NeoNox от 12 Апреля 2002, 13:08:59
Цитировать
+ лучше нормальную БД использовать

Ну уж не знаю.. ИМХО, эта ситуация и так будет напоминать маленький, легальный DDoS а базы типа MySQL будут регулярно "ложиться" при 1000 запросах  в секунду. Не тревиальная задача, однако...
Название: А если так:
Отправлено: Макс от 12 Апреля 2002, 16:31:53
сделать папку /domains/
и в ней хранить файлы .url
в котором хранить адрес, куда редиректить

И в скрипте определять имя домена, открывать файл и определять URL.
Название: Как сделать свою службу редиректа?
Отправлено: NeoNox от 12 Апреля 2002, 16:43:07
Цитировать
И в скрипте определять имя домена, открывать файл и определять URL.
Можно и так.
Alex-01, похоже, уже нашел выход...
Название: Как сделать свою службу редиректа?
Отправлено: ThE0ReTiC от 12 Апреля 2002, 16:55:55
А почему ни кто не рассмотрел возможность написания RewriteRule для того же апачи? Просто урл преображуется в путь до юзерской папки. И базы не надо.
Название: Как сделать свою службу редиректа?
Отправлено: Alex-01 от 13 Апреля 2002, 05:37:35
Цитировать
Alex-01, похоже, уже нашел выход...

Спасибо всем за дискуссию и советы, но выход я пока не нашел.
Мне более принципиально надо знать, как организовать автоматический запуск скрипта при наборе адреса
типа third_domain.your_server.ru
Говорят, это нужно что-то прописать в htaccess. Но я не знаю, что именно и как :-)
Название: Как сделать свою службу редиректа?
Отправлено: ThE0ReTiC от 16 Апреля 2002, 12:48:59
Почитай доку по RewriteRule и автоматически преобразуй third_domain.your_server.ru  в /.../your_server.ru/third_domain/
Название: Как сделать свою службу редиректа?
Отправлено: Alex-01 от 17 Апреля 2002, 08:00:19
Цитировать
Почитай доку по RewriteRule

Хорошо, надо будет поискать эту документацию.

Но, мне бы хотелось все-таки с базой данных, хотя бы в виде
текстового файла, так легче мне управлять клиентами и не
будет много папок.