Pergunta

Eu tenho um site que contém um monte de coisas freeware para download no-lo. O problema que estou enfrentando é que as pessoas de todo o mundo estão a tomar as ligações directas dos arquivos (por exemplo, arquivos .zip) e publicá-las em seus sites e fóruns gerais. Estou recebendo uma enorme quantidade de largura de banda e isso é ok, mas o número de páginas visitadas é baixa. Existe uma maneira ou um script que eu possa adicionar aos links, de modo que quando alguém pressiona sobre o link de um site estrangeiro, uma página do meu site abre em vez disso, que então deixa ele fazer o download do arquivo que eu possa obter mais visitas.

Por exemplo, este é um endereço do meu site:

http://sy-stu.org/stu/PublicFiles/StdLibrary/ Exam.zip

Quando alguém apertar nele, ele vai começar o processo de download diretamente.

Foi útil?

Solução

Se você estiver usando PHP, você pode ter um script que liga o usuário para o download, mas somente se o $_SERVER['HTTP_REFERER'] é a partir do seu site. Se não for você redirecionar para o seu site.

Outras dicas

O seu site é hospedado por um servidor web Apache, então você deve ser capaz de fazer o seguinte no do seu site httpd.conf (ou bloco host virtual)

RewriteEngine On
RewriteCond   %{HTTP_REFERER} !^$
RewriteCond   %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com/  [NC]
RewriteRule   ^/PublicFiles/  /page-about-direct-links.html

Isso está basicamente dizendo:

  1. Desligue o motor mod_rewrite on
  2. Se o HTTP Referente não estiver em branco ...
  3. E não contém o meu nome de domínio (com ou sem “www.”) ...
  4. Redirecionar todos os pedidos para qualquer coisa sob / PublicFiles / para /page-about-direct-links.html

Mais informações sobre mod_rewrite pode ser encontrada aqui: mod_rewrite - Apache HTTP Server

não fornecem um link direto para o arquivo que você está servindo. Fornecer um script que envia o conteúdo através do script Depois de bater no botão enviar.

Faça uma pesquisa na web para o envio de arquivos por meio de cgi.

Aqui está um link puro eu encontrei on-line: aqui

Porque não basta fazer a dinâmica ligações e indireta, por exemplo:

na página X: (estático)

<a href="Y">SuperNeat Program</a>

na página Y: (gerado dinamicamente)

Click here to download 
<a href="Z.php?timestamp={timestamp}&counter={counter}&hash={hash}">
SuperNeat Program</a>

e substituir timestamp w / a hora atual em milissegundos desde 1970, contador = um contador que você incrementa uma vez por download, de hash = MD5 hash da concatenação (timestamp, contador, sal segredo), onde o sal secret = qualquer código favorito que você mantenha segredo.

Em seguida, na página Z.php, basta recalcular o hash do balcão e timestamp na cadeia de consulta, verifique se ele corresponde o hash na cadeia de consulta, e que a hora é recente (por exemplo, a partir dos 30 minutos anteriores ou 60 minutos, ou qualquer outro). Se for, então, servir o arquivo em questão. Se não for, lançar uma mensagem de erro. Isso dá a alguém apenas um breve período de tempo para-link direto para o arquivo. Se você não quiser, mesmo que, em seguida, manter o controle dos valores do contador recebidos na cadeia de consulta Z.php e não aceitá-los mais de uma vez.

Eu não sou de todo um especialista em web, mas eu estava pensando sobre o seguinte ponteiro -

Se você estiver usando asp.net poderia http manipuladores ou módulos configurados na ajuda nível de web site (lote de informações sobre aqueles na web, eu olhei para cima recentemente para algum trabalho, aqui está uma artigo por exemplo

A idéia é interceptar a solicitação antes que ele atinja o arquivo de destino e redirecioná-lo para a página que você deseja mostrar; por exemplo -, se alguém deseja navegar para a url que você postou ( " http : //sy-stu.org/stu/PublicFiles/StdLibrary/Exam.zip ") interceptar esta chamada, usar alguma pesquisa para encontrar a página que você deseja exibir e redirecionar a solicitação lá; eu sou usuários de adivinhação seguindo um link não será muito irritado (a menos que eles têm feito "save Target As", o que resultaria-lhes poupar algum HTML e não ZIP).

No entanto, há alguns "buracos" no meu plano - como você realmente fornecer um link que as obras de sua própria página? Eu acredito que você pode diferenciar entre os pedidos provenientes do seu web site e aqueles provenientes de outros, que você pode verificar o manipulador / módulo, examinando o objeto de solicitação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top