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: 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: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: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: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.AddHandler type-map .var Options +MultiViews RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !/w+/.*.html RewriteRule ^/(w+)/(.*).html$ /$1/$2.html [R=301] 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:Wie kommst Du darauf? Zitat: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: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: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 ). 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: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:Musst Du wissen. Zitat: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: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. |