amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > scheinbaren doppelten content vermeiden (SEO) [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

23.10.2010, 22:53 Uhr

AGSzabo
Posts: 1663
Nutzer
hallo,

seit ein paar tagen nutze ich die funktionalität mittels .htaccess und einer index.var zu anderen sprachen in subdirectories umzuleiten. zB wird domain.de/ bei der browsereinstellung "de" nach domain.de/de/start.html umgeleitet. dabei erscheint aber der content von start.html doppelt, eimal unter domain.de/ bei entsprechender spracheinstellung im browser und einmal unter domain.de/de/start.html, weil diese start.html auf /de/seite_zwei.html verweist und diese seite_zwei.html wieder auf /de/start.html (daher wird der content AUCH unter /de/start.html gefunden)

dieses problem ist bestimmt schon bekannt: ich möchte erreichen, dass bei der weiterleitung zu der im browser eingestellten sprache auch die URL im browser von zB domain.de/ zu domain.de/de/start.html geändert wird, so dass man, bzw google nicht glaubt, dass die gleiche zielseite auch unter domain.de/ erreichbar ist (doppelter content).

danke fürs lesen,
Andreas
--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ - Antworten - Zitieren - Direktlink - ]

24.10.2010, 13:16 Uhr

jolo
Posts: 110
Nutzer
Zitat:
seit ein paar tagen nutze ich die funktionalität mittels .htaccess und einer index.var zu anderen sprachen in subdirectories umzuleiten. zB wird domain.de/ bei der browsereinstellung "de" nach domain.de/de/start.html umgeleitet.

Hmmm, meines Wissen nach (bin kein Apache-Experte) sollte man nicht aus "domain.de/index.html" "domain.de/de/start.html" machen, sondern "domain.de/start.de.html" bzw. "domain.de/start.en.html". Somit auch keine Unterverzeichnisse für die Root-Datei. Verweisende Dateien können natürlich in Unterverzeichnisse bleiben/wandern.

Beispiel:

code:
# .htaccess

Options +MultiViews
AddLanguage de .de
AddLanguage en .en
LanguagePriority de en

# Einstellungen für alternative Inhalte mit Apache 2.x
AddHandler type-map .var

# Deklaration der Dateien für die Pseudo-Index-Funktion
DirectoryIndex start.var



code:
# start.var

URI: start

URI: start.de.html
Content-type: text/html
Content-language: de
Description: "Das deutsche Original des Dokuments"

URI: start.en.html
Content-type: text/html
Content-language: en
Description: "English translation of this document"



Hier werden dann die Daten zwischen Browser und Apache-Server ausgetauscht, so dass bei einem Aufruf von "domain.de" entweder "start.de.html" oder "start.en.html" an den Browser weiter gereicht wird. Mit Unterverzeichnissen habe ich noch nicht experimentiert, sehe dazu auch keine Veranlassung.

Aus Kompatibilitätsgründen sollte auf den Standard "DirectoryIndex" "index" (index.var) innerhalb von ".htaccess" verzichtet werden, weil es leicht den Server verwirren kann; es könnten ja noch andere Dateien namens "index.nnn", vorhanden sein. Woher soll dann der Server wissen, welche Datei es weiterreichen soll? Daher ist eine explizite Angabe besser.

Anbei, ob die Google-Suchmaschine zwischen mehrsprachigen Sites differenziert, wage ich zu bezweifeln. Die Google-Suchmaschine versucht meinem Wissen nach in Abhängigkeit mit der Domain-Adresse eine Seite zu durchforsten. Demnach, bei einer ".de" Domain, immer nur den deutschen Inhalt, und nicht irgendeinen anderen.


Grüße

[ - Antworten - Zitieren - Direktlink - ]

24.10.2010, 19:23 Uhr

AGSzabo
Posts: 1663
Nutzer
@jolo:

google untersucht seiten im bezug auf sprache, ignoriert aber dabei alle language tags. schon ab 1000 buchstaben kann google die sprache recht gut erkennen. hab ich in einem anderen forum gelesen.

google empfiehlt, für verschiedene sprachen auch verschiedene dirs zu machen, oder sub- oder gar toplevel domains. die variante mit sudirs ist die beste für mich: linkpfade bleiben relativ und es ist somit auch leicht ein verzeichnis zu machen in dem etwas drin ist was von allen sprachen gebraucht wird.

hier eine lösung mit mod_rewrite, die offenbar genau das tut was ich will:

RewriteEngine on

# Sprachweiterleitung
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ /de/stiftung.html [R=301]
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ /en/foundation.html [R=301]
# Default-Sprache
RewriteRule ^$ /index.html [L,R=301]


--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 24.10.2010 um 19:23 Uhr geändert. ]

[ Dieser Beitrag wurde von AGSzabo am 24.10.2010 um 19:27 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

25.10.2010, 12:52 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von jolo:
Hmmm, meines Wissen nach (bin kein Apache-Experte) sollte man nicht aus "domain.de/index.html" "domain.de/de/start.html" machen, sondern "domain.de/start.de.html" bzw. "domain.de/start.en.html". Somit auch keine Unterverzeichnisse für die Root-Datei. Verweisende Dateien können natürlich in Unterverzeichnisse bleiben/wandern.

Das spielt eigentlich kaum eine Rolle. Am ehesten dann, wenn man den Server den Inhalt anhand von Dateiendungen automatisch erraten lässt. Dann ist index.de.html die bessere Wahl. Benutzt man .var-Dateien, ist das egal, und somit eher Geschmackssache.

Zitat:
Original von AGSzabo:
RewriteEngine on

# Sprachweiterleitung
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ /de/stiftung.html [R=301]
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ /en/foundation.html [R=301]
# Default-Sprache
RewriteRule ^$ /index.html [L,R=301]

Das funktioniert aber nur mit genau dieser einen Seite. Besser wäre es, eine allgemeinere Regel zu schreiben, wie:
code:
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^(w+).html$ /de/$1.html [R=301]


Das leitet Seiten der Form "Wort.html" nach "/de/Wort.html" um.

Ich habe gerade versucht, unsere Konfiguration zu verstehen (ist zu lange her), aber offenbar kann man MultiViews mit Rewrite so kombinieren, dass zuerst die sprachspezifische Variante über MultiViews ausgewählt und dann auf die resultierende Url via Rewrite verwiesen wird.

Das sähe dann ungefähr so aus:
code:
AddHandler type-map .var
Options +MultiViews

RewriteEngine On
RewriteBase   /
RewriteCond   %{REQUEST_URI} !/w+/.*.html
RewriteRule   ^/(w+)/(.*).html$ /$1/$2.html [R=301]

Damit werden alle URLs der Form /Sprache/Seite.html (die Ergebnisse der Selektion via MultiViews) auf sich selbst "umgeleitet", so dass ihre Adresse im Browser steht. Als Bedingung ist festgehalten, dass die ursprünglich angeforderte URL nicht schon die Form /Sprache/Seite.html haben darf, um keine Rekursion zu verursachen. Außerdem kann der Benutzer so eine beliebige Sprachvariante explizit anfordern, bookmarken, etc. Außerdem kann so Google alle Seiten abgrasen.

Meiner Erfahrung nach macht Google gar keine Content-Negotation, bzw. verhält sich wie ein US-Client. Deshalb ist es wichtig, dass alle Seiten über Links erreichbar sind und nicht nur über Content-Negotation ausgewählt werden. Es gehört ja sowieso zum guten Ton, die Sprachauswahl auch über Links zu ermöglichen.

Die Code-Beispiele sind jetzt leider nicht getestet, könnten also möglicherweise auch noch Fehler enthalten.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

25.10.2010, 14:02 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

ein manko deiner methoden ist, dass die seiten für alle sprachen gleich heissen müssen. ich möchte aber, dass es in der englsichen version "foundation.html" und in der deutschen "stiftung.html" lautet.

ich habs jetzt so:
.htaccess code:
Options -Indexes +IncludesNoExec -MultiViews
AddOutputFilter INCLUDES .shtml .html

RewriteEngine On

# domain.xx -> www.domain.xx
# RewriteBase /
RewriteCond %{HTTP_HOST} !^www.menschtest.quicktunnels.net$
RewriteRule ^(.*)$ http://www.menschtest.quicktunnels.net/$1 [L,R=301]

# Sprachweiterleitung
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ /de/stiftung.html [R=301] 
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ /en/foundation.html [R=301]
RewriteCond %{HTTP:Accept-Language} ^pt [NC]
RewriteRule ^$ /pt/brazil.html [R=301]

# Default-Sprache
RewriteRule ^$ /hu/index.html [L,R=301]

#ErrorDocument 404 /index.html



und jede sprache ist in einem eigenen unterverzeichnis, auch die defaultsprache wobwohl .hu schon im domainnamen auftaucht. die sprachenseiten includieren dann mit virtual="../static/design.inc" und änliche die teile die auf allen seiten gleich sind.
--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ - Antworten - Zitieren - Direktlink - ]

25.10.2010, 15:32 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
ein manko deiner methoden ist, dass die seiten für alle sprachen gleich heissen müssen.

Wie kommst Du darauf?
Zitat:
ich möchte aber, dass es in der englsichen version "foundation.html" und in der deutschen "stiftung.html" lautet.
Kannst Du ja machen, wird aber unpraktisch, bis nicht mehr zumutbar, sobald eine Webseite aus mehr als nur einer Seite besteht.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

25.10.2010, 15:39 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

> Wie kommst Du darauf?

dann hab ichs nicht verstanden.

> Kannst Du ja machen, wird aber unpraktisch, bis nicht mehr zumutbar, sobald eine Webseite aus mehr als nur einer Seite besteht.

warum? mir genügt es, wenn beim klick auf eine fahne immer blos die titelseite einer sprache erreicht wird. oder hab ich dich hier auch nicht verstanden?

andreas
--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ - Antworten - Zitieren - Direktlink - ]

26.10.2010, 13:15 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
dann hab ichs nicht verstanden.

Ich versuchs noch mal.

Du benutzt wie oben am Beispiel gezeigt, bereits eine type-map. Die Idee besteht nun darin, weiterhin eine type-map zu benutzen, um dem Server mitzuteilen, welche Dateien den sprachspezifischen Inhalt liefern.

Du kannst zum Beispiel eine type-map namens example.var mit folgendem Inhalt anlegen:

code:
URI: de/beispiel.html
Content-type: text/html
Content-language: de

URI: en/example.html
Content-type: text/html
Content-language: en


Dann wird der Zugriff des Benutzers auf http://deinserver/example den Inhalt von http://deinserver/en/example.html oder http://deinserver/de/beispiel.html liefern, abhängig von seiner bevorzugten Sprache.

Wenn Du die gleiche Datei noch unter dem Namen beispiel.var auf den Server legst, darf natürlich auch ein symbolischer Link sein, passiert des gleiche auch dann, wenn der Benutzer http://deinserver/beispiel eingibt.

Natürlich darf der Benutzer auch .html anhängen, wenn er das will, dafür sorgt ja "MultiViews".

Was Dir nur fehlt, ist, dass der Benutzer nicht nur den Inhalt, sondern auch die Adresse im Browser sieht.

Dazu kann man nun eine Weiterleitung einsetzen, die einfach die Adresse auf sich selbst weiterleitet. Die Adresse ist zu diesem Zeitpunkt der Verarbeitung im Apache bereits die Adresse, die Du über die type-map bestimmt hast.

Die formulierte Regel besagt also nur, dass Adressen der Form /sprache/irgendwas.html auf genau diese Adresse /sprache/irgendwas.html weitergeleitet werden sollen.

Als Bedingung wird allerdings gesagt, dass die ursprünglich angeforderte URL nicht die Form /sprache/irgendwas.html besitzen darf. Sonst würde es zum einen zu einer Rekursion kommen, zum anderen will man ja gar nicht, dass der Benutzer umgeleitet wird, wenn er bereits explizit eine Adresse der Form /sprache/inhalt anfordert, da er möglicherweise auf eine Fahne geklickt hat, statt die Sprache in seinem Browser zu spezifizieren oder ein Bookmark angelegt hat.

Das ist alles.
Zitat:
> Kannst Du ja machen, wird aber unpraktisch, bis nicht mehr zumutbar, sobald eine Webseite aus mehr als nur einer Seite besteht.

warum? mir genügt es, wenn beim klick auf eine fahne immer blos die titelseite einer sprache erreicht wird. oder hab ich dich hier auch nicht verstanden?

Du willst ja offensichtlich den gleichen Inhalt in verschiedenen Sprache bereitstellen. Das wird für Dich als Maintainer äußerst anstrengend, wenn jeder Artikel in jeder Sprache in einer anders benannten Datei liegt. Du kannst dann nicht mal einfach durch vergleichen von Directory-Listings nachschauen, ob etwas fehlt.

Und dann willst Du beispielsweise in alle beispiel.html ein Bild beispiel.png einbinden (sind meine Beispiel-Namen nicht kreativ :D ). Welche Datei musst Du jetzt bearbeiten?

de/beispiel.html
fr/exemple.html (oder war's doch fr/précédent?)
ru/образец.html
it/esempio.html

und ...

Natürlich würde es bei einer konsistenten Benennung auch trivial werden, beim Klick auf eine Fahne nicht mehr auf die Hauptseite zu springen, sondern beim bereits ausgewählten Thema zu bleiben...

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

26.10.2010, 13:35 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

echt viel arbeit hast du dir gemacht. ich denke das ein parmal mal durch..
--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 26.10.2010 um 13:35 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

26.10.2010, 15:22 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

der name der seite soll immer in der sprache des betrachters sein. die zahl der seiten bleibt übersichtlich.

bei den ganzen weiterleitungen ist es fast ausgeschlossen, dass der besucher oder ein bot/spider auf / (webspace root) landet, oder? das würde bedeuten, dass die eigentliche domain in den suchergebnissen garnicht mehr auftaucht?
--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ - Antworten - Zitieren - Direktlink - ]

26.10.2010, 15:48 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
der name der seite soll immer in der sprache des betrachters sein.

Was verstehst Du unter dem "Namen der Seite"? Das ist normalerweise der Titel, der im <title>-Element der Html-Seite steht. Die URL dagegen ist das Ding, in dem je nach Webpräsenz zwanzigstellige Hexdezimalzahlen und dutzende form/post Parameter stehen und eh keiner hinsieht. Da müssen keine Dateinamen in der Sprache des Benutzers stehen. Der Domain-Name wird ja auch nicht übersetzt.
Zitat:
... die zahl der seiten bleibt übersichtlich.
Musst Du wissen.
Zitat:
bei den ganzen weiterleitungen ist es fast ausgeschlossen, dass der besucher oder ein bot/spider auf / (webspace root) landet, oder? das würde bedeuten, dass die eigentliche domain in den suchergebnissen garnicht mehr auftaucht?
So, wie Du es ursprünglich gepostet hast, gibt es doch gar keine "/"-Seite, sondern nur jeweils eine sprachspezifische Seite.

Und da man Verzeichnisse grundsätzlich nicht abrufen kann, sondern immer nur eine default-Datei bekommt, wie z.B. "index.html", die auch direkt abgerufen werden kann, gibt es natürlich auch keine Garantie, dass die "eigentliche domain" gegenüber der URL mit identischem Inhalt bevorzugt in den Suchergebnissen auftaucht.

Aber wozu sollte es auch wichtig sein, den Root seiner Domain in den Suchergebnissen zu haben?

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

26.10.2010, 16:02 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

ich glaube ich mache mit der /index.html komplett schluss, so dass es sie nicht mehr gibt, und leite halt immer zum irgendeiner sprache weiter, auch defaultmäßig.

daran stört sich doch eine suchmaschine nicht?

die dateien sollen sprechende namen haben weil man sie einzeln jemandem zum merken geben können soll, oder leicht verlinken.

--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 26.10.2010 um 16:06 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

26.10.2010, 16:34 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
... leite halt immer zum irgendeiner sprache weiter, auch defaultmäßig.

daran stört sich doch eine suchmaschine nicht?

Nö, wie gesagt, das einzige, worauf man achten sollte, ist, dass alle Sprachversionen auch über Links zu erreichen sind, da Suchmaschinen nicht mit unterschiedlichen Spracheinstellungen vorbeischauen, sondern nur mit einer und dann alle Links abwandern.
Sofern man keine Sitemap registriert hat.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

26.10.2010, 21:47 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

ich weis ja, dass es nicht die gute art ist, aber ergibt es doppelten content oder andere probleme wenn ich nicht gefundene seiten immer auf die startseite der gesendeten sprachpreferenz leite?

eben erreichte mich eine email zu dem thema: Auf die Anzeige der Root ohne Umleitung würde ich nie verzichten. Wenn die Root umleitet, krieg ich z.B. in meinem Firefox eine Warnung, die ich erst bestätigen muß. Ich kann mir schon gut vorstellen, das auch eine Suchmaschine wenig Lust hat, diese Domain gut einzustufen.

--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 27.10.2010 um 00:49 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

27.10.2010, 13:58 Uhr

mcb
Posts: 3
Nutzer
@AGSzabo:

http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > scheinbaren doppelten content vermeiden (SEO) [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.