Ich poste dies als eine weitere Antwort anstatt dies zu meinem anderen Beitrag hinzuzufügen, weil es das Problem aus einem anderen Blickwinkel angeht. Hier gehe ich davon aus, dass alle Ihre mp3s im selben Ordner sind.
Das Problem, dem Sie gegenüberstehen, ist auf schlampiges Codieren seitens derjenigen zurückzuführen, die das Mediaplayer-Ding gemacht haben, das Wordpress verwendet. Was passiert ist, dass der Player auf dem Rechner des besuchenden Benutzers läuft und tatsächlich die mp3 herunterlädt und lokal abspielt. Das Problem entsteht, weil der Player überhaupt keine nützlichen Header zur Verfügung stellt: Der User-Agent ist der Ihres Browsers, der Referrer ist leer usw. Es ist daher völlig unmöglich zu sagen, ob die Anfrage vom Player kommt oder von einem Browser, der auf Ihren Link in einer Audiosuchmaschine geklickt hat. Tatsächlich ist der einzige Weg, um Ihre mp3s davor zu schützen, indexiert zu werden, den Link so oft wie möglich zu ändern.
Und das ist genau der Plan. Kurz gesagt, hier ist was wir machen werden:
- ändern Sie den Pfad zu Ihren mp3s. Dies bleibt GEHEIM.
- erstellen Sie ein Skript, das als Proxy für die mp3s dient, welches einen gültigen Schlüssel erfordert, der sich stündlich ändert
- ändern Sie alle Ihre Verwendungen des mp3-Players, um das mp3-Proxy-Skript zu verwenden, aber mit einem Platzhalter-Schlüssel
- erstellen Sie ein Skript, das als Proxy für Ihren Webserver dient, welches den Platzhalter-Schlüssel durch den tatsächlichen Schlüssel ersetzt
- verwenden Sie
.htaccess
, um alle Anfragen an Ihren Server umzuschreiben, damit sie das Webservers-Proxy-Skript verwenden.
Der Vorteil all dessen ist, dass sich Ihre Benutzererfahrung nicht ändern wird, aber wenn ein Crawler Ihre Links durchsucht, werden sie nur bis Mitternacht an diesem Tag gültig sein. Danach wird eine knappe Nachricht (oder sogar eine mp3 von Ihnen, die sie bittet, Ihre Sachen nicht herunterzuladen) angezeigt.
Bereit? Los geht's!
Schritt 1:
Zuerst einmal stellen Sie sicher, dass Sie Ihren mp3s-Ordner umbenannt haben! Dies wird alle vorhandenen Links brechen (und wenn Sie das nicht tun, bleiben alle bereits durchsuchten Links gültig). Zweitens erstellen Sie eine robots.txt
-Datei, um Google und andere Suchmaschinen am Indexieren Ihres mp3s-Ordners zu hindern.
Jetzt erstellen Sie eine Datei im Stammverzeichnis namens mp3serve.php
mit folgendem Inhalt:
Was dies tut, ist, dass es den Dateinamen einer MP3 und einen beliebigen Schlüssel nimmt und den Dateiinhalt zurückgibt, wenn der Schlüssel gültig ist. Beachten Sie, dass dieses Skript:
- überhaupt nicht überprüft, ob
$file
auf das zeigt, was Sie erwarten, außer der Tatsache, dass es sicherstellt, dass es nur mp3-Dateien zurückgeben wird.
- gibt keine gültigen Header für mp3-Dateien zurück - sie werden im Browser als Text gerendert. Dies ist leicht zu beheben, aber der korrekte Header entzieht sich mir im Moment... und sowieso kümmert sich der Wordpress mp3-Player nicht darum, also ist alles gut :)
Schritt 2:
Jetzt zum etwas kniffligen Teil: wir müssen die Links dynamisch umschreiben. Der einfachste Weg, dies zu tun, ist, einen "Lokal-Proxy" zu schreiben, was wirklich viel einfacher ist als es klingt. Was wir tun werden, ist ein Skript zu schreiben, das das hätte, was Ihre Seite ausgegeben hätte, und die mp3-Links korrigiert. In meinem Beispiel werden wir alle Ihre Artikel mit mp3s bearbeiten, aber wenn Sie es komplizierter gestalten möchten, ist dies nicht unbedingt erforderlich.
Zuerst bearbeiten Sie alle Ihre Artikel mit mp3-Playern. Sie könnten dies automatisieren, aber wenn WP keine Funktion zum "Finden/Ersetzen in allen Artikeln" hat, würde ich davon abraten, einfach aus dem Grund, dass Sie etwas falsch machen und Ihre Artikel zerstören könnten. Bearbeiten Sie sie auf jeden Fall und ersetzen Sie die mp3-Links in den Playern von
/pfad/zu/mp3s/.mp3
zu
/mp3serve.php?file=&key=[{mp3_dateischlüssel}]
Erstellen Sie nun ein weiteres PHP-Skript in Ihrem Stammverzeichnis namens proxyviewer.php
mit folgendem Inhalt:
Schritt 3:
Jetzt zum letzten Teil: richten Sie Ihre .htaccess-Datei so ein, dass alle Anfragen von
http://ihreseite/irgendeine/anfrage/hier
zu
http://ihreseite/proxyviewer.php?req=irgendeine/anfrage/hier
umgeleitet werden.
Leider bin ich wirklich nicht gut mit .htaccess-Dateien, also kann ich Ihnen den genauen Code nicht geben, aber es dürfte nicht allzu schwer sein.
Herzlichen Glückwunsch, Sie sind fertig!
Haftungsausschluss:
Bitte beachten Sie, dass der Code hier nicht für den produktiven Einsatz geeignet ist. Erstens habe ich ihn überhaupt nicht getestet - obwohl es, es sei denn, es gibt einen Schreibfehler irgendwo, alle funktionieren sollten, würde ich Ihnen dringend raten, sie sorgfältig durchzusehen, bevor Sie damit live gehen. Ich war ziemlich vorsichtig, um keine schlimmen Dinge zuzulassen, aber es überprüft nicht ernsthaft, und es ist früh am Morgen hier, also kann es sein, dass ich etwas übersehen habe.