it-swarm.com.de

PDF -Datei per Download-Skript und direktem Link bereitstellen: doppelter Inhalt?

Ich habe eine Website, auf der ein PDF Dokument (mathematisches Papier) gehostet wird. Die Hauptseite der Website enthält einen Link zum Dokument

http://example.com/download.php?file=Document.pdf  

Der Zweck des Skripts download.php besteht darin, IP-Adressen zu protokollieren, die das Dokument herunterladen.

Das Dokument kann jetzt auch über den Link angezeigt/heruntergeladen werden

http://example.com/Document.pdf

Hat dieses Setup Nachteile aus der SEO-Perspektive (doppelter Inhalt)? Und wenn ja, wie kann ich es verbessern?

4
Leo

Ja, dies ist doppelter Inhalt. Auf denselben Inhalt kann über zwei verschiedene URLs zugegriffen werden, und es findet keine Kanonisierung statt.

Grundsätzlich bedeutet dies, dass die Suchmaschinen das eine oder andere auswählen, um es in den SERPs zurückzugeben. Das Ranking wird im Wesentlichen zwischen den beiden URLs aufgeteilt.

beide URLs werden zum Verknüpfen verwendet.

Sie müssen entscheiden, welche die kanonische/bevorzugte URL ist, und nur auf diese eine URL verlinken.

Der Einfachheit halber betrachten wir nur die beiden URLs, die Sie aufgelistet haben. Die bevorzugte URL scheint diejenige zu sein, die über Ihr Download-Skript abgerufen wird (z. B. download.php), ansonsten verfolgen Sie nicht die IP-Adressen der Benutzer, die die Datei herunterladen.

Um bereits indizierte URLs aufzulösen, können Sie den direkten Link zu Ihrem Skript extern umleiten. Unter der Annahme von Apache können Sie in Ihrer root .htaccess -Datei Folgendes tun:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^([^/]+\.pdf)$ /download.php?file=$1 [R=302,L]

Dadurch wird eine Anforderung für /Document.pdf (nur wenn sie als physische Datei im Dateisystem vorhanden ist) an /download.php?file=Document.pdf umgeleitet.

$1 ist ein Rückverweis auf die erste erfasste Gruppe in RewriteRuleMuster (dh ([^/]+\.pdf)).

Ändern Sie die (temporäre) Umleitung 302 in eine (permanente) 301, wenn Sie sicher sind, dass sie ordnungsgemäß funktioniert. 301s werden vom Browser zwischengespeichert, was das Testen problematisch machen kann.


Eine "benutzerfreundlichere" URL (AKTUALISIERT)

Sie können noch einen Schritt weiter gehen und eine "benutzerfreundlichere" URL wie /download/Document.pdf erstellen. Dies wird dann zur kanonischen URL - der URL, zu der Sie einen Link erstellen.

In diesem Fall müssen Sie sicherstellen, dass MultiViews deaktiviert ist, da Sie eine Datei haben, deren Basisname ebenfalls "download" ist (dh download.php vs /download). Andernfalls führt mod_negotiation wahrscheinlich zu einer internen Unteranforderung für download.php (abhängig von der Anforderung), bevor wir die URL neu geschrieben haben. Also oben auf .htaccess:

Options -MultiViews

Alle direkten Anfragen für /Document.pdf oder /download.php?file=Document.pdf sollten extern umgeleitet an die kanonische URL gerichtet werden. Zum Beispiel:

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^([^/]+\.pdf)$ /download/$1 [R=301,L]

RewriteCond %{THE_REQUEST} GET\ /download\.php\ HTTP
RewriteCond %{QUERY_STRING} ^file=(.+\.pdf)$
RewriteRule ^download\.php$ /download/%1 [R=301,L]

%1 (im Gegensatz zu $1, oben erwähnt) ist ein Rückverweis auf das zuletzt übereinstimmende RewriteCondCondPattern (dh (.+\.pdf)).

Die zusätzliche RewriteCond (Bedingung), die gegen THE_REQUEST prüft, ist erforderlich, um eine Umleitungsschleife zu verhindern. (THE_REQUEST enthält den ursprünglichen Anforderungsheader und ändert sich nicht, wenn die URL neu geschrieben wird.)

/download/Document.pdf würde dann intern umgeschrieben auf die "echte" URL lauten. dh /download.php?file=Document.pdf. Ein internes Umschreiben ist, wie es vermuten lässt, serverintern. Es gibt keine externe HTTP-Anforderung. Die URL in der Adressleiste ändert sich nicht. Es ist vollständig für den Endbenutzer verborgen.

RewriteRule ^download/([^/]+\.pdf)$ download.php?file=$1 [L]

Beachten Sie, dass in dieser Anweisung kein R (redirect) Flag vorhanden ist, das andernfalls eine externe Umleitung auslösen würde.

Idealerweise würden Sie den regulären Ausdruck so restriktiv wie möglich gestalten. Im obigen regulären Ausdruck entspricht .+ beispielsweise beliebig Zeichen (1 oder mehr). Wenn Ihre Dateinamen jedoch nur aus Groß- und Kleinbuchstaben bestehen, sollten Sie den regulären Ausdruck so ändern, dass er nur mit Buchstaben übereinstimmt. z.B. [a-zA-Z]+.

5
MrWhite