redirect для на разные fastdl сервера

Danyas

Участник
Сообщения
2,173
Реакции
1,072
Скрипт:
PHP:
<?php 
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://real_fastdl_ip/".$_GET['file']);
exit();
?>

Путь к скрипту: new_fastdl_ip/index.php
sv_downloadurl: http://new_fastdl_ip/?file=


Соль в том, что с браузера на при переходе на http://new_fastdl_ip/?file=maps/de_dust2.bsp.bz2 всё качается отлично, а сама игра отказывается качать этот файл.

error логов у апача нету, данные с acess лога:

danyas.pp.ua:80 CLIENTIP - - [29/Aug/2016:22:10:59 +0300] "GET /?file=/maps/de_dust2.bsp.bz2 HTTP/1.1" 301 278 "hl2://SERVERIP:SERVERPORT" "Half-Life 2"
danyas.pp.ua:80 CLIENTIP - - [29/Aug/2016:22:10:59 +0300] "GET /?file=/maps/de_dust2.bsp HTTP/1.1" 301 273 "hl2://SERVERIP:SERVERPORT" "Half-Life 2"
danyas.pp.ua:80 CLIENTIP - - [29/Aug/2016:22:10:59 +0300] "GET /?file=/maps/de_dust2.nav.bz2 HTTP/1.1" 301 277 "hl2://SERVERIP:SERVERPORT" "Half-Life 2"
danyas.pp.ua:80 CLIENTIP - - [29/Aug/2016:22:10:59 +0300] "GET /?file=/maps/de_dust2.nav HTTP/1.1" 301 273 "hl2://SERVERIP:SERVERPORT" "Half-Life 2"
 

The Night Fury

Участник
Сообщения
1,300
Реакции
1,395
Ты уверен, что движок поддерживает HTTP редиректы? Не помню такого функционала в нём.
 

Danyas

Участник
Сообщения
2,173
Реакции
1,072
Ты уверен, что движок поддерживает HTTP редиректы? Не помню такого функционала в нём.
Судя по всему - не поддерживает :C
Есть какие - то еще предложения?
Мне знакомый такой пример скинул - Автоматическая загрузка файла при переходе по ссылке - PHP для начинающих - CyberForum.ru
Хочу попробовать
 

The Night Fury

Участник
Сообщения
1,300
Реакции
1,395
Не факт, что octet-stream ему тоже подойдёт, но так должно сработать. Попробуй и octet-stream, и x-bz2. Возможно, для bsp придётся использовать octet-stream.
 

Akkotto

Участник
Сообщения
88
Реакции
20
А не проще для переброса mod_rewrite использовать?
 

ykpon

Владыка
Сообщения
676
Реакции
401
Через файл я бы сделал так:
C-подобный:
header("Content-Disposition: attachment; filename=\"{$_GET['file']}\"");
header("Content-Type: application/octet-stream");
header("Content-Length: " . filesize($_GET['file']));
$f = fopen($_GET['file'], 'rb');
while (!feof($f)) {
   echo fread($f, 1024 * 8);
}
fclose($f);
 

Danyas

Участник
Сообщения
2,173
Реакции
1,072
PHP:
<?php 
$suka = $_GET['file'];
$pieces = explode("/", $suka);
$file = array_pop($pieces);

header("Content-disposition: attachment; filename=.$file");
header("Content-type: application/x-bz2");
header("Content-Description: File Transfer");
readfile("http://real_fastdl_ip".$suka);
exit();
?>


Через браузер качает, через игру - нет
--- Добавлено позже ---
@ykpon Сейчас попробую
 

feelsteel

Участник
Сообщения
8
Реакции
1
Через файл я бы сделал так:
C-подобный:
header("Content-Disposition: attachment; filename=\"{$_GET['file']}\"");
header("Content-Type: application/octet-stream");
header("Content-Length: " . filesize($_GET['file']));
$f = fopen($_GET['file'], 'rb');
while (!feof($f)) {
   echo fread($f, 1024 * 8);
}
fclose($f);

PHP:
<?php
$suka = $_GET['file'];
$pieces = explode("/", $suka);
$file = array_pop($pieces);

header("Content-disposition: attachment; filename=.$file");
header("Content-type: application/x-bz2");
header("Content-Description: File Transfer");
readfile("http://real_fastdl_ip".$suka);
exit();
?>


Через браузер качает, через игру - нет
--- Добавлено позже ---
@ykpon Сейчас попробую

отдавать статику через чтение файлов на пхп - плохо кончится
если апач - юзай XSendFile On в конфиге,
C-подобный:
header('Content-Disposition: inline;filename=' . $fileName);
header('Content-Type: application/x-bzip');
header('X-SendFile: ' . $filePath);

тебе для чего это нужно вообще?
может с другой стороны к задаче можно подойти

Оффтоп
 

ykpon

Владыка
Сообщения
676
Реакции
401
отдавать статику через чтение файлов на пхп - плохо кончится
если апач - юзай XSendFile On в конфиге,
C-подобный:
header('Content-Disposition: inline;filename=' . $fileName);
header('Content-Type: application/x-bzip');
header('X-SendFile: ' . $filePath);

тебе для чего это нужно вообще?
может с другой стороны к задаче можно подойти

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

Kruzya

Участник
Сообщения
12,970
Реакции
10,927
  • Команда форума
  • #10
Тема устаревшая, но всё же.

Судя по всему - не поддерживает :C
Не знаю, как в КСС это устроено и в КС:ГО, но в ТФ2 редиректы точно поддерживаются. Знакомый через .htaccess так сбивал нагрузку на свой веб-сервер, заставляя клиент игры качать файлы с других серверов.
PHP:
Redirect 301 /fastdl/maps/example.bsp.bz2 http://dl.site.com/maps/example.bsp.bz2
Redirect 301 /fastdl/maps/mymap.bsp.bz2 http://dl.site2.com/maps/mymap.bsp.bz2
 
Сверху Снизу