301'er Weiterleiung von "index.php?seite=xxx"

Wie wir alle wissen (sollten) ändert mod_rewrite keine Links im Script. Damit auch die Links auf Deiner Page auf die neuen "Rewrited URLs" zeigen bedarf es der Anpassung im Code. Fragen und Probleme rund um's Coding werden hier diskutiert.

Moderator: Super-Mod

301'er Weiterleiung von "index.php?seite=xxx"

Beitragvon der_bolle » 04.08.2009 12:14

Hallo Leute,

ich würde mich sehr freuen, wenn ihr mir unter die Armen greifen könntet. Ich versuche es übersichtlich zu gestalten und würde mich sehr über Hilfe freuen :)

Problem:
Bis vor kurzem hatte ich in meiner index.php eine include Funktion, welche quasi den Inhalt bestimmter Seiten includiert hatte. Diese zu includierenden Seiten waren im Ordner "http://www.meinedomain.de/includes
Um den Inhalt aufrufen zu können hat man dann einfach die Adresse so genutzt:
"http://www.meinedomain.de/index.php?seite=blabla"

Die Datei war also: http://www.meinedomain.de/includes/blabla.php

Da dieses Prinzip lange herrschte und SEO technisch auch schlecht war habe ich alles neu geschrieben. Nun ist aber das Problem, dass Suchmaschinen noch die vielen alten Links haben, welche nicht mehr existieren., der Ordner als auch die Daten an sich.

derzeitiges Workaround:
Im Moment nutze ich eine permanente Redirect vom Ordner "includes" zur domain. Von da kommt man nur noch auf die alktuellen Links. Diese Lösung ist aber nicht wirklich toll, da natürlich der Besucher nicht auf der angefragten oder gesuchten Seite landet...

gewünschtes Ziel:
Ich möchte alle alten Seiten auf die entsprechenden neuen Seiten leiten

mein Lösungsansatz:
Hier wird es interessant und problematisch. Derzeit probiere ich über eine .htaccess und einem Script dies zu realsieren. Das sieht wie folgt aus:

--> .htaccess
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^.*\.php$ http://www.meinedomain.de/rewriteold.php [R,301]

--> rewriteold.php
$old_sites[blabla] = 'blabla_neu_und_toll';

if(array_key_exists(intval($_GET['seite']),$old_sites))
{
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.meindomain.de/'.$old_sites[intval($_GET['seite'])].'.php');
}
else
{
http://www.meindomain.de
}

--> Es soll also geprüft werden, ob jemand über eine Url mit dem Inhalt "http://www.meinedomain.de/index.php?seite=xxx" reinkommt. Wenn dem so ist soll es an die Datei mit dem Script gehen. Dort soll dann geprüft werden, was genau das "xxx" ist und soll dann erkennen, was die neue dazu passende Datei ist.

Das klingt erstmal nicht schlecht, aber...

Problem:
...es funktioniert nicht. Schon allein wenn ich nur die .htaccess erstelle und speichere komme Fehler 500, interner Server Fehler...

Frage:
Könnt ihr euch das bitte mal ansehen und mit mir nach der Lösung suchen? Vielleicht bin ich einfach nur noch blind oder es gibt eine ganz andere, viel einfachere Lösung oder so....
In meinem Kopf ist erstmal Durchzug :(

Danke schon mal an alle!
der_bolle
.
.
 
Beiträge: 2
Registriert: 04.08.2009 11:25

Beitragvon Gumbo » 04.08.2009 16:02

Code: Alles auswählen
RewriteCond $1 !=rewriteold
RewriteRule ^(.+)\.php$ rewriteold.php [L]
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon der_bolle » 04.08.2009 17:06

Hallo Gumbo,

vielen Dank für deine Antwort.

Leider geht es immer noch nicht, es kommt immer noch der Fehler 500...Dabei spielt es keine Rolle, ob ich die Domain, eine neue Seite oder eine alte Seite(index.php?seite=xxx) eintrage :(

In meiner .htacces steht nun:
RewriteEngine on
RewriteBase /
RewriteCond $1 !=rewriteold
RewriteRule ^(.+)\.php$ rewriteold.php [L]

Fehlt noch was oder so, ich bin verwirrt...
der_bolle
.
.
 
Beiträge: 2
Registriert: 04.08.2009 11:25


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron