Question

Je possède un site Web qui contient beaucoup de choses freeware pour télécharger sur elle. Le problème que je suis face est que les gens du monde entier prennent les liens directs des fichiers (par exemple des fichiers .zip) et de les afficher sur leurs sites Web et forums généraux. Je reçois une énorme quantité de bande passante et c'est ok, mais le nombre de pages visitées est faible. Est-il un moyen ou un script que je peux ajouter aux liens, de sorte que lorsque quelqu'un appuie sur le lien d'un site étranger, une page de mon site ouvre à la place, ce qui lui permet ensuite de télécharger le fichier afin que je puisse obtenir plus de visites.

Par exemple, c'est une adresse de mon site:

  

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

Quand on appuie dessus, il va commencer le processus de téléchargement directement.

Était-ce utile?

La solution

Si vous utilisez PHP, vous pouvez avoir un script qui relie l'utilisateur au téléchargement, mais seulement si le $_SERVER['HTTP_REFERER'] est de votre site. Dans le cas contraire vous redirigez sur votre site.

Autres conseils

Votre site est hébergé par un serveur web Apache, vous devriez donc être en mesure de faire ce qui suit dans votre site de httpd.conf (ou bloc d'hôte virtuel)

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

Ce revient à dire:

  1. Faire tourner le moteur mod_rewrite sur
  2. Si le Référent HTTP est pas vide ...
  3. Et ne contient pas mon nom de domaine (avec ou sans « www. ») ...
  4. réacheminer toute demande de quoi que ce soit sous / PublicFiles / à /page-about-direct-links.html

Plus d'informations sur mod_rewrite se trouve ici: mod_rewrite - Serveur Apache HTTP

Ne pas fournir un lien direct vers le fichier que vous servez. Fournir un script qui envoie le contenu à travers le script une fois que vous appuyez sur le bouton soumettre.

Faites une recherche sur le Web pour envoyer des fichiers via cgi.

Voici un lien net j'ai trouvé en ligne:

Pourquoi ne pas simplement faire les liens dynamiques et indirects, par exemple:

à la page X: (statique)

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

à la page Y: (généré dynamiquement)

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

et remplacer l'horodatage w / l'heure actuelle dans msec depuis 1970, contre = un compteur que vous incrémenter une fois par téléchargement, hash = hachage MD5 de concaténer (horodatage, compteur, sel secrète) où le sel secret, = tout code préféré vous garder secret.

Ensuite, à la page Z.php, vous recalculez juste le hachage du compteur et horodatage dans la chaîne de requête, vérifiez qu'il correspond au hachage dans la chaîne de requête, et que l'horodatage est récente (par exemple des 30 dernières minutes ou 60 minutes ou autre). Le cas échéant, servir le fichier en question. Dans le cas contraire, jetez un message d'erreur. Cela donne à quelqu'un seulement une brève période de temps directe lien vers votre fichier. Si vous ne voulez même pas, alors garder une trace des valeurs de compteur reçues dans la chaîne de requête Z.php et ne les accepte pas plus d'une fois.

Je ne suis pas du tout un expert web, mais je pensais le pointeur suivant -

si vous utilisez asp.net pourrait http des gestionnaires ou des modules configurés au niveau du site Web d'aide (lot de l'information sur les sur le web, je l'ai regardé jusqu'à récemment pour un certain travail, voici une article par exemple

L'idée est d'intercepter la demande avant qu'elle atteigne le fichier cible et rediriger vers la page que vous souhaitez afficher; par exemple - si quelqu'un souhaite accéder à l'URL que vous avez posté ( " http : //sy-stu.org/stu/PublicFiles/StdLibrary/Exam.zip ") intercepter cet appel, utilisez une recherche pour trouver la page que vous souhaitez afficher et rediriger là la demande, je suis les utilisateurs devinettes suivant un lien ne sera pas trop ennuyé (à moins qu'ils ne l'ont fait « enregistrer la cible sous », qui les entraînera l'enregistrement du code HTML et non ZIP).

Cependant, il y a un certain « trou » dans mon plan - comment voulez-vous fournir effectivement un lien qui fonctionne à partir de votre propre page? Je crois que vous pouvez différencier les demandes provenant de votre site Web et ceux qui viennent des autres que vous pouvez vérifier sur le gestionnaire / module en examinant l'objet de requête.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top