Перенаправить загрузку в другое место, но сохранить URL

349
vaid

Я пытаюсь выяснить, как разместить на своем веб-сайте ссылку, которая позволяет посетителю загрузить файл, например, https://www.website.com/file.zipно на самом деле он находится по адресу https://255.255.255.255/actual_file.zip.

Я еще ничего не пробовал, потому что не могу понять это гипотетически, теоретически или практически.

Да, я использовал Google, obv.

0
Что работает ваш сайт? Это работает Apache? PHP? CGI? жерех? LPChip 5 лет назад 0

1 ответ на вопрос

0
LPChip

Есть много способов сделать это, в зависимости от того, что поддерживает ваш сервер.

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

По сути, вы хотите создать скрипт или страницу, которая перенаправляет на новый URL.

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

Вы создаете новую страницу, например, с именем download.phpи внутри вас перенаправить на URL. Я мог бы написать целый скрипт селектора с проверками безопасности и т. Д., Но это выходит за рамки этого вопроса и будет более подходящим для переполнения стека.

<?php $file = $_GET['file']; header("Location: https://255.255.255.255/".$file); ?> 

Обратите внимание, что для написания нового заголовка сценарий не должен был выводиться ранее, в противном случае любой вывод выведет стандартный заголовок на страницу, а команда header не будет работать.

Вы бы теперь делали гиперссылки вроде:

<a href="https://www.example.com/download.php?file=actual_file.zip">Download</a> 

Для HTML потребуется страница для каждого файла и теги для перенаправления на загрузку. Это будет означать, что URL-адрес изменится, но файлы могут управляться через эти страницы.

Наконец, htaccess можно использовать для маскировки файла download.php.

Кроме того, htaccess может делать все без сценария php, но, опять же, не уверен, используете ли вы Apache.

Учитывая, что это прокси-сервер, как бы его ни крутили, файл сначала будет загружен на сервер? Или это будет просто туннелироваться для пользователя? vaid 5 лет назад 0
Его туннелируется для пользователя. Если вы хотите, чтобы сервер загружал это, вам нужно намного больше кода, потому что тогда вы, вероятно, тоже захотите кэшировать загрузку, а это означает, что вы загрузите его в локальное место, а затем вместо этого перенаправите скрипт в это место. Такой вопрос определенно потребует php и подойдет для переполнения стека. LPChip 5 лет назад 0
Понимаю. Тогда ваше предложение именно то, что я ищу. Мне нужно туннелирование. vaid 5 лет назад 0