# .htaccess Weiterleitung



## DiDiJo (9. November 2009)

Hallo Leute,

ich hab ne Seite mit einem eigenen CMS System. In diesem CMS-System kann man Hauptseiten, Unterseiten und Unter-Unterseiten anlegen.

vorher hat man die Links immer wie folgt aufrufen können:

index.php?kid=xyz
index.php?kid=xyz&skid=123
index.php?kid=xyz&skid=123&sskid=abc

Nun sind das nicht gerade suchmaschinen freundliche Links und deshalb hab ich gerade folgende Änderung gemacht, sodass die Links nur noch wie folgt aufgerufen werden:

/5/Startseite.htm
/5-1/Startseite-Unterseite.htm
/5-1-2/Startseite-UnterUnterseite.htm

das ganze wird dann per .htaccess umgeleitet:

```
RewriteRule ^([0-9]+)/.*\.htm$ /index.php?kid=$1 [L]
RewriteRule ^([0-9]+)([-])([0-9]+)/.*\.htm$ /index.php?kid=$1&skid=$3 [L]
RewriteRule ^([0-9]+)([-])([0-9]+)([-])([0-9]+)/.*\.htm$ /index.php?kid=$1&skid=$3&skid=$5 [L]
```

Das funktioniert auch soweit ... allerdings glaube ich, dass man diese Regeln etwas besser aufbauen könnte. Das wäre schonmal ein "Problem" von Zweien.
Vlt. weiß ja jemand ne Bessere Anweisung ... Darüber würde ich mich schonmal freuen...

Nun kommt Problem 2. 

Die Homepage die vor dem Admin-System liegt hat schon jede Menge Content. Und es kommt auch schonmal vor, dass im Content einige Links auf andere Content-Seiten zeigen.

Diese alten Links haben noch meine alte Linkstruktur ... das ist aber soweit erstmal kein Problem. Was viel schlimmer ist, dass die ganzen links jetzt nicht mehr funktionieren, da Sie anscheind in das flasche Verzeichniss zeigen.

Ein Beispiel:

Folgenden Link habe ich in meinem Quellcode / Content:

```
<a href="index.php?kid=10&skid=15&sskid=20">Testlink</a>
```

Wenn ich nun darauf klicke öffnet der Browser folgende Seite:
http://www.meineseite.de/19-35/index.php?kid=10&skid=15&sskid=20

Das Problem ist, dass ihm der Slash ganz am Anfang fehlt

```
<a href="/index.php?kid=10&skid=15&sskid=20">Testlink</a>
```
 (der link klappt).

Eigentlich sollte der Brwoser dann ja die Seite so aufrufen:
http://www.meineseite.de/index.php?kid=10&skid=15&sskid=20

Jetzt hab ich schon bei einigen Links die Slashes per Hand eingefügt ... aber ich bin der Meinung, dass ich sowas auch Problemlos mit htaccess lösen könnte, wenn ich mich nur ansatzweise damit auskennen würde. Außerdem ist es ziemlich mühselig ca. 300 Links per hand abzuändern

Und nun kommt Ihr ins Spiel  ...

Habt Ihr vlt. eine kurze Regel parat, die mir alle Links ohne Slash index.php?xyz[...] so iumleitet => /index.php?xyz[...] 

Das würde mir nämlich ca. 2 - 3 stunden arbeit ersparen

Hier meine Beispieseite:
http://www.thaimassage.de/19-35/Kompaktausbildungen.htm

Habbet nun: Hier is die Lösung aller meiner Probleme:


```
# Umleiten aller "fehlgeleiteten" Anfragen in nicht vorhandene Unterordner
RewriteCond %{REQUEST_URI} !^.*.htm$
RewriteRule ^[0-9]+.*?/(.*) /$1 [L]

#RewriteRule ^([0-9]+)([-])([0-9]+)/.*\.htm$ /index.php?kid=$1&skid=$3 [L]

# Umleiten sämtlicher Hauptseiten
RewriteRule ^([0-9]+)/.*\.htm$ /index.php?kid=$1 [L]

# Umleiten sämtlicher Unterseiten
RewriteRule ^([0-9]+)([-])([0-9]+)/.*\.htm$ /index.php?kid=$1&skid=$3 [L]

# Umleiten sämtlicher Sub-Unterseiten
RewriteRule ^([0-9]+)([-])([0-9]+)([-])([0-9]+)/.*\.htm$ /index.php?kid=$1&skid=$3&skid=$5 [L]
```


----------

