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:

Code: Alles auswählen

echo '<a href="index' . $DatEndung . '">Index</a>';
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:

Code: Alles auswählen

<a href="unterseite-<?php echo $sprache;?>.html"
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
bzw. SEO URLs

Slytherin

Verfasst: 05.04.2006 15:16
von MagMo
Hi,
Slytherin hat geschrieben:bzw. SEO URLs
Das hilft ja bei phpBB. Aber obiges Problem sieht mir nicht unbedingt nach phpBB aus. :wink:

Grüße
MagMo

Verfasst: 05.04.2006 15:25
von Slytherin
Okay, ich bin jetzt einfach mal davon ausgegangen, dass er phpBB gemeingt hat :wink:
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.