Suchmaschinenfreundlichkeit mit mod_rewrite

m.wohlers
Beiträge: 93
Registriert: Di 25. Mai 2004, 16:11
Wohnort: Bad Aibling
Kontaktdaten:

Beitrag von m.wohlers »

Hi timo!
timo hat geschrieben:Doch, denn die Sprache wird in einem Cookie abgelegt. Ich habe es bei mir so gelöst, daß ich für verschiedene Sprachen verschiedene Frontends habe:

www.timohummel.com/de => Deutsch
www.timohummel.com => Englisch (mit auto-redirect auf Deutsch, falls der Besucher aus Deutschland kommt)
Wie hast Du das denn gemacht, wenn ich mal so frech/faul fragen darf?

Grüsse...
Michael Wohlers
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

Ähm eigentlich ganz einfach...ich habe das komplette Frontend ganz normal in den Webserver-Root gelegt, und dann die relevanten Frontend-Dateien nochmals unter de/ abgelegt - dort die config.php angepasst (damit Sprache Deutsch geladen wird).

Zusätzlich habe ich das Produkt GeoIP verwendet, um eine Unterscheidung der Landeszugehörigkeit zu machen. Das schaut so aus:

Code: Alles auswählen

<?php
/*****************************************
* File      :   $RCSfile: include.entrypoint.php,v $
* Project   :   timohummel.com
* Descr     :   Provides the entry point for timohummel.com visitors
*
* Author    :   $Author: timo.hummel $
*
* Created   :   07.11.2003
* Modified  :   $Date: 2004/06/07 14:25:13 $
*
* $Id: include.entrypoint.php,v 1.25.4 2004/06/07 14:25:13 timo.hummel Exp $
******************************************/

/* GeoIP library to resolve visitors */
include("geoip.inc");

/* Open GeoIP database */
/* TODO: Make database file configurable */
$gi = geoip_open("/usr/share/GeoIP/GeoIP.dat",GEOIP_STANDARD);

/* Resolve visitor, redirect to germany if source equals german */
if (geoip_country_code_by_addr($gi, $_SERVER["REMOTE_ADDR"]) == "DE")
{
  header("Location: /de/index-a-19.html");
} else {
  header("Location: /index-a-19.html");
}

?>
Also no magic ;)
llaron
Beiträge: 133
Registriert: Mi 14. Jul 2004, 12:54
Kontaktdaten:

Beitrag von llaron »

nikolis hat geschrieben:schöner thread, hat mir den Anfang sehr erleichtert.

@laurisilva: Ich hatte das gleich Problem, bei mir sind das allerdings sehr wenige links und da ist es einfacher diese manuell zu aktualisieren. Das einzige was ich aber gemacht habe, ist den enstprechenden part in htmlarea zu aktualisieren so dass alle neuen Links so eingefügt werden wie es gewollt ist. In der Datei dialogs/insert_link.php kannst du das an einer Stelle ändern damit der "Interne Link" in Zukunft richtig gesetzt wird.

Um es im nachhinein zu machen müsstest du glaub ich die db per script aktualisieren und ich denke mal in der Datenbank-Tabelle namens content die entsprechenden Werte des Feldes namens "value" editieren. Ich bin aber noch nicht so contenido erfahren, und weiss nicht ob es noch andere Fälle gibt wo das wo anderes gespeichert wird.

Ich persönlich finde FrankHoffmann's Lösung am besten obwohl ich das "Skript" nirgendwo gefunden habe zum Download, und Kunde will ich bei ihm nicht werden. Ich weiss nicht ob du es der Communitiy hier angeboten hast, oder es nicht anbieten möchtest. Wie auch immer, es ist ja auch nichts dabei das selber zu machen. Und aus SEO Sicht ist es auf jeden Fall die bessere Lösung, den Dateinamen nach dem Kategorienamen zu benennen. Da das Skript aber statische Seiten erzeugt, finde ich es als nicht so optimale Lösung. Ich habe mich für eine Kombination entschieden zwischen laurisilva's Ansatz und FrankHoffmann's:

Ich habe laurisilvas Ansatz umgesetzt und einfach etwas erweitert. Meine Zeile(n) in der .htaccess lautet:

RewriteRule ^([0-9]*)-(.*).html$ /front_content.php?idcat=$1

Somit habe ich das Format :

26-Buchhandlung.html

was man sicher noch optimieren kann. Dabei ist 26 die id, das minus nur ein Trennzeichen, und Buchhandlung der zur ID 26 gehörende Kategorie-Name, der aber ignoriert wird, das erkennt man daran das ich kein $2 verwende.

An den von laurisilva erwähnten Stellen für die Navigationslinks habe ich einfach "sein":
$data['idcat'].
ersetzt/erweitert durch:
$data['idcat'].'-'.$data['name'].

Ich weiss natürlich nicht ob es da Fälle gibt wo das nicht so richtig klappt, aber soweit ich das bisher sehe, sollten die auch lösbar sein.
Der Vorteil ist dass man das weiterhin im contenido style hat und keine statischen Seiten erzeugen brauch, ein Nachteil ist das die ID (mit dem Bindestrich) dazwischen ist.
hi,

ich habe das mod_rewr bei mir verbaut. funktioniert soweit auch ganz gut. nur ein problem gibt es - die dritte ebene in der navigation funktioniert nicht. es wird bei allen menüpunkten von ebene 3 die url vom darüberliegenden punkt der ebene 2 angezeigt! ich benutze die geteilte navigation - ebene eins ist horizontal in einem container, ebene 2 + 3 sind zusammen, untereinander in einem container (dürfte aber keine rolle spielen)

bsp:

punkt 1 (horizontal)

punkt 1.1 (url bsp. 2-Produkte.html)
> punkt 1.1.1 (url bsp. 2-Produkte.html = gleiche url wie punkt 1.1!)

hat jemand ne idee woran das liegen könnte?

merci,
Nico
Thorsten Gruber
Beiträge: 73
Registriert: Di 23. Aug 2005, 15:38
Wohnort: Hamminkeln
Kontaktdaten:

Beitrag von Thorsten Gruber »

Hallo zusammen,
also ich habe das Problem, das selbst wenn ich htaccess erstellt habe und die zeilen in der Hauptnavi Ausgabe geändert habe, das ich nen 404 bekomme.

Nu meine Frage wenn google eh front_content.php sowie & etc. zeichen erkennen kann, wofür dann eigentlich der Aufwand ? Vertseh ich das was falsch ? Weil wenn meine Domain eingegeben wird, muss ich doch auch in eurem Fall eine Weiterleitung der index.html in den cms Ordner erstellen oder nicht ? Genau diese Weiterleitung ist es ja die EVTL. als Spam erkannt werden "könnte". Eure Sache würde also nur Sinn machen, wenn man genau diese Weiterleitung umgehen würde, oder seh ich da was falsch?

Ich bin gerade erst dabei mich ernsthaft mit Suchmaschinenoptimierung zu beschäftigen und bin hier für jeden Tip dankbar.

Danke schonmal für Antworten sagt Thorsten
FrankHoffmann
Beiträge: 149
Registriert: Sa 21. Jun 2003, 14:03
Kontaktdaten:

SuMa-Freundlichkeit

Beitrag von FrankHoffmann »

Hallo,

der Vorteil sprechender Dateinamen

a) www.xxx.de/thorsten.php

gegenüber php Parameter wie

b)www.xxx.de/front_content.php?client=1&l ... &idart=381

ist: Im Ranking beachten Suchmaschinen auch den Dateinamen.

Also wird die Suche nach "thorsten" das Ergebnis a) vor dem Ergebnis b) zeigen (gleichen Inhalt etc. natürlich vorausgesetzt).
ccccccccc
Thorsten Gruber
Beiträge: 73
Registriert: Di 23. Aug 2005, 15:38
Wohnort: Hamminkeln
Kontaktdaten:

Beitrag von Thorsten Gruber »

Alles klar, das ist auf jeden Fall schonmal logisch :D

Nun zum anderen Dingen. Bei der Umsetzung scheints bei mir noch zu hapern. Ich habe nun also eine .htaccess erstellt und in den cms Ordner gelegt. Außerdem habe ich den Inhalt der Hauptnavi im Ausgang wie folgt geändert:

.htaccess

Code: Alles auswählen

RewriteEngine On 
RewriteRule ^(.*),(.*).html$ /front_content.php?idcat=$1&idart=$2 
RewriteRule ^coaching(.*).html$ /front_content.php?idcatart=$1 
RewriteRule ^(.*).html$ /front_content.php?idcat=$1
im Navi Ausgang habe ich

Code: Alles auswählen

$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat'])); 
mit folgendem ersetzt

Code: Alles auswählen

  $tpl->set('d', 'HREF', $sess->url($data['idcat'].'-'.$data['name'].'.html')); 
aber klappen tut leider NÜSCHTS

1. habe ich einen Fehler begangen ?
2. wohin muß ich die index.html im root weiterleiten ? Ich meine wenn ich Sie nur in cms verweise, weiß diese ja nicht wohin. Oder wo ist mein Denkfehler, den ich bestimmt mal wieder begangen habe.

Danke schonmal Thorsten
Gesperrt