Seite 1 von 2
mod_rewrite, Sprachen und SEO
Verfasst: 05.04.2006 13:24
von Loewenherz
Hi,
Bekannte haben sich grade wegen einer vorhandenen mehrsprachigen Seite an mich gewandt, bei der sämtliche URLs in der Form
http://www.domain.de/seitenname.php?sprache=de lauten. Google hat nichts davon indiziert, ähnlich wie bei ?id=. Ich überlege jetzt, wie es am schnellsten umzustricken wäre, zumal sie mittlerweile finanziell ziemlich am Boden sind.
Am einfachsten wäre vermutlich mod_rewrite. Hat jemand einen Vorschlag, wie das am sinnvollsten zu lösen wäre?
Verfasst: 05.04.2006 13:38
von MagMo
Hi,
das ist recht einfach zu machen.
Definiere für alle Sprachen eine 'Dateiendung':
Code: Alles auswählen
if ($aktuelleSprache == 'eng')
{ $DatEndung = '-eng.html'; }
else
{ $DatEndung = '-de.html'; }
Die Variable $aktuelleSprache enthält die aktuelle Sprache des Besuchers (nomen est omen).
Dann musst du (leider) alle Links anpassen. Nach diesem Schema:
Und zum Schluss noch die .htaccess anpassen:
Code: Alles auswählen
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/([A-Za-z0-9]*)-eng\.html
RewriteRule (.*) /%1.php?sprache=eng [L]
RewriteCond %{REQUEST_URI} ^/([A-Za-z0-9]*)-de\.html
RewriteRule (.*) /%1.php?sprache=de [L]
Wenn du im Dateinamen noch andere Zeichen als Buchstaben und Zahlen verwendest, dann musst du obiges entsprechend ändern.
Das war's.
Jetzt sind aus den dynamischen Links statische geworden und die Links passen sich der Sprache des Benutzers an. Zudem haben jetzt deine Links die schöne Dateiendung .html.
Wenn du außer "sprache" noch welche Variablen übergibst, dann nicht vergessen die .htaccess entsprechend anzupassen.
Grüße
MagMo
Verfasst: 05.04.2006 13:50
von Loewenherz
Danke für die Hinweise. Der Programmierer hat folgendes gemacht:
Vor dem Header die Anweisungen:
Code: Alles auswählen
<?php
if(!isset($_GET["sprache"])){
$sprache = "deut";
}else{
$sprache = $_GET["sprache"];
}
if($sprache == "deut"){
include("sprachen/deut.php");
$pfad = "deut";
}elseif($sprache == "engl"){
include("sprachen/engl.php");
$pfad = "engl";
}elseif($sprache == "span"){
include("sprachen/span.php");
$pfad = "span";
}elseif($sprache == "fran"){
include("sprachen/fran.php");
$pfad = "fran";
}elseif($sprache == "tsch"){
include("sprachen/tsch.php");
$pfad = "tsch";
}elseif($sprache == "ital"){
include("sprachen/ital.php");
$pfad = "ital";
}
?>
Die Links dann so:
Code: Alles auswählen
<a href="unterseite.php?sprache=<?php echo $sprache;?>"
Wenn ich deine Vorgehensweise richtig verstehe, erweitere ich nun wie folgt:
Code: Alles auswählen
if($sprache == "deut"){
include("sprachen/deut.php");
$pfad = "deut";
$DatEndung = '-de.html';
}elseif($sprache == "engl"){
include("sprachen/engl.php");
$pfad = "engl";
$DatEndung = '-en.html';
Und die Links? *grübel*
Verfasst: 05.04.2006 13:55
von MagMo
Hi,
ändere die Links mal wie folgt:
Dann natürlich noch die .htaccess für alle Sprachen nach obigem Schema ändern.
Grüße
MagMo
Verfasst: 05.04.2006 14:04
von Loewenherz
Super, vielen Dank! Ich werds die Tage mal testen.
Verfasst: 05.04.2006 15:08
von Slytherin
Verfasst: 05.04.2006 15:16
von MagMo
Hi,
Das hilft ja bei phpBB. Aber obiges Problem sieht mir nicht unbedingt nach phpBB aus.
Grüße
MagMo
Verfasst: 05.04.2006 15:25
von Slytherin
Okay, ich bin jetzt einfach mal davon ausgegangen, dass er phpBB gemeingt hat
Möglich, dass ich falsch liege.
Ausserdem muss man beachten, dass der Hoster mod_rewrite unterstützen muss.
(Freehoster wie beispielsweise Funpic.de unterstützen mod_rewrite nicht)
Slytherin
Verfasst: 05.04.2006 17:32
von Loewenherz
So, ich habs mal getestet.
Zum einen schreibt mod_rewrite die Dateinamen nicht um. Es erscheint weiterhin dateiname.php?sprache=deut - dabei müsste meines Wissens bereits dateinname-de.html erscheinen.
Was mich nach beim Überarbeiten ebenfalls irritiert, ist die Tatsache, dass ich die Links ändern soll. Warum? Sie funktionieren doch intern und mod_rewrite schreibt sie dann um. Ein bereits nach obiger Angabe geänderter Link ergibt einen 404er, im Adressfenster erscheint .../dateiname-deut.html
MagMo, was meinst du dazu?
Und ja, der Webhoster unterstützt es, und nein, es geht nicht um phpBB, sonst hätte ich in einem anderen Board gepostet

Verfasst: 05.04.2006 17:51
von fanrpg
Nein wenn du Links weiterhin über seite.php?lang=deu aufrufst ändert mod_rewrite daran nix.
Wenn du aber dann die .html Seite verlinkst die umgewandelt werden soll (sprich aufrufst) dann kann die sie auch so erreichbar gemacht werden.