Seite 1 von 1

URL Rewriting einzelner dynamischer URLs

Verfasst: 30.12.2008, 18:18
von herrenlos
Hallo liebe Forengemeinde,

ich würde mich freuen, wenn mir ein Forenmitglied weiterhelfen könnte....!

Ich betreibe ein Forum und aufgrund der der Struktur bzw. der vorgeschalteten CMS sehen einige Pfade leider wie folgt aus

www.forendomain.de/index.php?pag=contentseite

Ich würde gerne nun einzelne (von mir ausgesuchte) URLs konform in eine statische URL umwandeln wollen, also

www.forendomain.de/contentseite.html

Ich habe nun so einiges ausprobiert, doch es will mir einfach nicht gelingen, daher bitte ich Euch um Eure Hilfe.

Wichtig hierbei ist, dass die mod_rewrite Regel nicht pauschal für alle "Problem-URLs" gelten soll, sondern nur die von mir ausgewählte URLs sollen ein "Facelifting" bekommen.

Sicherlich werde ich irgendwann mal auf ein anderes CMS umsteigen und dies mit dem Forum verknüpfen, doch momentan ist das aufgrund der Größe und Struktur nicht ganz so trivial, daher benötige ich die etwas unschönere Übergangslösung.

Vielen Dank im Voraus.

Verfasst:
von

Verfasst: 30.12.2008, 19:05
von bloddy newbie
Hallo herrenlos,

du kannst einzelne Seiten wie folgt umleiten:

Code: Alles auswählen

RewriteEngine on
RewriteBase /

RewriteRule /contentseite.html$ index.php?page=contentseite [L]
Zusätzlich empfehle ich dir die alten Uris Permanent auf die neuer Struktur umzuschreiben:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} index\.php
RewriteCond %{QUERY_STRING} page=contentseite$
RewriteRule .* contentseite.html? [R=301]
Du musst nun die oben aufgeführte Passage entsprechend der Anzahl umzuleitender Seiten duplizieren und "contentseite" entsprechend deines Vorhabens anpassen. Am Ende könnte das dann wie folgt aussehen:

Code: Alles auswählen

RewriteEngine on
RewriteBase /

# Kontakt
RewriteRule kontakt.html$ index.php?page=kontakt&dummy [L]

RewriteCond %{REQUEST_URI} index\.php
RewriteCond %{QUERY_STRING} page=kontakt$
RewriteRule .* kontakt.html? [R=301]

# Impressum
RewriteRule impressum.html$ index.php?page=impressum&dummy [L]

RewriteCond %{REQUEST_URI} index\.php
RewriteCond %{QUERY_STRING} page=impressum$
RewriteRule .* impressum.html? [R=301]
Nachtrag: In meiner ersten Ausführung ist mir ein Denkfehler unterlaufen - passiert :-(. Ich habe nun "&dummy" angehangen, damit es zu keiner Umleitungsschleife kommt. Suchmaschinen und Besucher bekommen diesen Parameter nicht zu sehen. Er dient also lediglich als Trick, um der Umleitungsschleife zu entgehen. Bitte beachte auch das Fragezeichen am Ende der Permanent Redirect Rules.

Grüße und einen guten Rutsch

Verfasst: 30.12.2008, 19:34
von herrenlos
Hi,

vielen Dank. Habs mit meinen Daten ergänzt und wie beschrieben eingefügt, doch leider erhalte ich dann folgende Fehlermeldung:

"Additionally, a 400 Bad Request error was encountered while trying to use an ErrorDocument to handle the request."

Die HTML-Datei als solches muss doch nicht existieren, oder? Ich möchte ja schließlich nur, dass die dynamsiche "einfach nur" als statische HTML-Endung umschrieben wird.

Hab ich ein Kriterium nicht beachtet?

Auch Dir einen guten Rutsch und bis hier her vielen Dank für Deine Bemühungen.

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 30.12.2008, 20:10
von bloddy newbie
Nein die HTML Datei muss nicht existieren. Mir ist bei der ersten Ausführung leider ein Fehler unterlaufen. Meine erstes Posting habe ich nun angepasst und den Code getestet - funktioniert.

Beste Grüße

Verfasst: 30.12.2008, 22:45
von herrenlos
Hi,

vielen lieben Dank. Einfach Klasse! :)
Ein tolles, nachträgliches, Weihnachtsgeschenk! ;)

Eine kleine Anmerkung... Bei mir funktioniert es nur mit einer kleinen Änderung... Die Änderung ist fett markiert. Ohne diese Ergänzung erhalte ich weiterhin die obige Statusmeldung.

Code: Alles auswählen

RewriteEngine on
RewriteBase /

# Kontakt
RewriteRule kontakt.html$ index.php?page=kontakt&dummy [L]

RewriteCond %{REQUEST_URI} index\.php
RewriteCond %{QUERY_STRING} page=kontakt$
RewriteRule .* kontakt.html? [[b]L,[/b]R=301] 
Dir von Herzen alles Gute.