Frage

Ich besitze eine Website, die eine Menge Freeware Sachen enthält auf, um es herunterzuladen. Das Problem, das ich mit Blick auf bin ist, dass Menschen aus der ganzen Welt die direkten Verbindungen nehmen die Dateien (zB ZIP-Dateien) und sie auf ihren Websites und allgemeine Foren veröffentlichen. Ich bin eine große Menge an Bandbreite bekommen und das ist in Ordnung, aber die Anzahl der besuchten Seiten ist gering. Gibt es eine Möglichkeit oder ein Skript, das ich auf die Links hinzufügen kann, so dass, wenn jemand auf dem Link von einer fremden Webseite drückt, eine Seite von meiner Website stattdessen öffnet, die dann läßt ihn die Datei herunterladen, so kann ich mehr Besucher bekommen.

Zum Beispiel ist dies eine Adresse von meiner Website:

  

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

Wenn jemand auf sie drückt, wird es den Download-Prozess direkt starten.

War es hilfreich?

Lösung

Wenn Sie PHP verwenden, können Sie ein Skript, das den Benutzer auf die Download-Links, aber nur, wenn der $_SERVER['HTTP_REFERER'] von Ihrer Website ist. Wenn es nicht umleiten Sie auf Ihre Website.

Andere Tipps

Ihre Website durch ein Apache-Webserver gehostet wird, so sollten Sie die folgenden in Ihrer Website httpd.conf (oder virtuellen Host-Block)

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

Das ist im Grunde sagen:

  1. Schalten Sie den Motor mod_rewrite auf
  2. Wenn der Referrer nicht leer ist ...
  3. Und nicht enthält meinen Domain-Namen (mit oder ohne „www.“) ...
  4. umleiten, alle Anfragen für alles unter / PublicFiles / bis /page-about-direct-links.html

Weitere Informationen über mod_rewrite finden Sie hier: mod_rewrite - Apache HTTP Server

Sie bieten keine direkte Verbindung zu der Datei, die Sie dienen. Geben Sie ein Skript, das den Inhalt durch das Skript sendet, sobald Sie die Absenden-Button getroffen.

Führen Sie eine Web-Suche nach Dateien durch cgi senden.

Hier ist ein ordentlich Link fand ich online: hier

Warum macht nicht nur die Verbindungen dynamisch und indirekt, zum Beispiel:

auf Seite X: (statisch)

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

auf Seite Y: (dynamisch generiert)

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

und Zeitstempel ersetzen w / die aktuelle Zeit in Millisekunden seit 1970 Zähler = ein Zähler, der Sie einmal erhöhen pro herunterladen, hash = MD5-Hash verketten (Zeitstempel, Zähler, geheime Salz), wo geheime Salz = any Lieblings Code, den Sie halten Geheimnis.

Dann auf Seite Z.php, die Sie gerade den Hash aus dem Zähler und Zeitstempeln in der Abfragezeichenfolge neu zu berechnen, überprüfen, ob sie den Hash in der Abfragezeichenfolge übereinstimmt, und dass der Zeitstempel ist kürzlich (zB aus den letzten 30 Minuten oder 60 Minuten oder was auch immer). Wenn ja, dann die Datei in Frage dienen. Wenn nicht, wird eine Fehlermeldung werfen. Dies gibt jemand nur eine kurze Zeitspanne Direkt Link zu Ihrer Datei. Wenn Sie nicht einmal das wollen, dann verfolgen die Zählerwerte in der Z.php Query-String empfangen und nicht akzeptieren, sie mehr als einmal.

Ich bin nicht einen Web-Experte, aber ich war zu folgendem Zeiger denken -

Wenn Sie verwenden asp.net könnte Handler oder Module http unter der Web-Site-Ebene Hilfe konfiguriert (viel von Informationen über die auf dem Netz, ich es vor kurzem für einige Arbeit aufsah, hier ist ein Artikel zum Beispiel

Die Idee ist, die Anforderung abzufangen, bevor sie die Zieldatei erreicht und leitet es an der Seite, die Sie zeigen wollen; zum Beispiel - wenn jemand möchte die URL Sie haben geschrieben ( " http durchsuchen : //sy-stu.org/stu/PublicFiles/StdLibrary/Exam.zip ") abfangen dieser Aufruf verwenden einige Lookup die Seite, die Sie anzeigen möchten, und leiten die Anfrage dort zu finden, ich bin zu raten Benutzern einen Link folgt nicht zu ärgern (es sei denn, sie „Ziel speichern unter“ getan haben, was ihnen einige HTML-Einsparung führen würde und nicht die ZIP-Datei).

Allerdings gibt es einige „Loch“ in meinem Plan - wie schaffen Sie eigentlich einen Link, der von Ihrer eigenen Seite funktioniert? Ich glaube, Sie können kommen von Ihrer Website und diejenigen zwischen den Anforderungen unterscheiden sich von anderen kommen, die Sie auf dem Handler / Modul durch die Untersuchung des Request-Objekt überprüfen konnten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top