Dynamische PHP Seite Umleiten (Mod_Rewrite)

Hallöle ;)

ich bin auch mal wieder hier Aktiv ;)
und habe direkt eine Frage, zu dem Bereich php + Mod_Rewrite.

Undzwar geht es um folgendes Problem:

Ich habe eine Webseite, die so unschöne lange Urls hat zb:
index.php?site=gallery&groupID=1234

Über die Rewrite Funktion habe Ich sie in:

galerie,gruppe,1234.htm "umgenannt, generiert (wie man das halt nennt)".

Code:
RewriteRule galerie,gruppe,(.*)\.htm$ index2.php?site=gallery&groupID=$1 [L]

Und jetzt ist die Seite ja nachwievor unter beiden Adressen zu erreichen, was in den Suchmaschinen Doppelten Content hervorruft :/, und über die Klassische 301 Permanent weiterleitung erreiche ich nicht, das der Benutzer umgeleitet wird auf die schicke *.htm Seite,

Code:
Redirect 301 /verzeichnis/beispiel.html http://www.domain.com/beispiel.html

Ich möchte halt gerne erreichen, das wenn "A" in seinen Browser: www.example.com/index.php?site=gallery&groupID=1234 automatisch auf www.example.com/galerie,gruppe,1234.htm geleitet wird.

Und das dann dementsprechend per Permanent, so das die Sumas dies Aktualisieren & den alten Link löschen, gibt es da eine Möglichkeit?,
soetwas per htacess zu erreichen, da die Links Dynamisch sind (vermute ich, da die IDs generiert wird,) zb auch index2.php?site=forum&board=ID

Ich schreib die Urls halt immer in das Format, Name,ID,seitenID
Habe zuerst in anderen Foren gefragt, aber dort konnte mir niemand helfen :/,

darum Wende ich mich mal voller Hoffnung an euch ;)

Besste Grüße,
Fabian

"Edit Grund: Satzzeichen etc hinzugefügt!"
 
Hallo,
anscheinend kann das Apache-Modul mod_alias (enthält u.a. die Redirect* Direktiven) nichts mit dem Query String anfangen.
Glücklicherweise kann mod_reqrite ebenfalls Redirects auslösen.
Das Ganze kannst du etwa so angehen:
1. Führe mit einer "RewriteCond"-Direktive einen Match auf den Query String durch, um deinen dynamischen Parameter auszulesen.
2. Führe dann eine "RewriteRule" für das falsche Format aus, wobei du einen Redirekt auf das richtige Format auslöst ([R=301]), und dies als letzte Regel deklarierst ([L]).
3. Führe _danach_ deinen normalen Redirekt vom richtigen Format auf die dynamische (php?)-Datei aus, und kennzeichne dies ebenfalls als letzte Regel.

Jetzt sollte ein Aufruf des falschen Formats zu einem Redirect auf das korrekte Format führen, der als Aufruf der dynamischen Datei interpretiert wird.
Achte aber darauf, dass das redirect-Ziel eine vollständige URL (inkl. http://) ist, da es sonst einen Internal Server Error geben kann.
Einziger (kleiner) Nachteil: Der Originale Query-String vom falschen Format wird an den Aufruf des richtigen Formats angehängt. Das macht aber mod_rewrite immer so.

Beispiel:
.htaccess
Code:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^myquery=(.*)$
RewriteRule ^index\.php$ http://www.planet-metax.de/diegeekdie/redirectTest/%1.htm [R=301,L]
RewriteRule (.*).htm index.php?myquery=$1 [L,QSA]
Geplant ist es also, dass ich URLs der Form http://www.planet-metax.de/diegeekdie/redirectTest/irgendwas.htm aufrufe und dies als index.php?myquery=irgendwas interpretiert wird.
Wenn ich jetzt aber index.php?myquery=irgendwas direkt aufrufe, werde ich mit einem Statuscode 301 (permanent) auf die URL http://www.planet-metax.de/diegeekdie/redirectTest/irgendwas.htm?myquery=irgendwas umgeleitet, so dass kein Duplicate Content entsteht.

mfg, metax.
 
Hallo,

Werde daraus grade leider nicht so schlau :/, wenn ich es Teste erhalte ich Weiterleitungen in dem Format:

www.example.com/ueber-uns.htm?site=about

Was ja nicht sinn und Zweck ist :/

Code:
RewriteEngine On

RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.example\.de$

RewriteRule index\.htm$ index.php [L]

RewriteCond %{QUERY_STRING} ^?site=about$
RewriteRule ^index\.php$ http://www.example.de/ueber-uns.htm [R=301,L]

RewriteRule ueber-uns\.htm$ index.php?site=about [L]
RewriteRule ueber-uns$ index.php?site=about [L]

So sieht die .htaccess bei mir aus in gekürzter Fassung (Ist ca 10Kb groß)

So viele EDIT's (Bald hab ichs ;))
 
Hallo sonywalker,

hast Du das Problem lösen können? Ich habe ein ganz ähnliches Problem mit der htaccess.

Ausgangsproblem war es auch, eine dynamische php-Seitenstruktur auf statische Seiten per mod-rewrite umzuleiten.

Vorher: www.domain.de/website.php&id=bla
Aktuell: www.domain.de/bla

Das hat auch wunderbar geklappt
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /domain/website.php\?id=$1 [QSA,NC]

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ""
RewriteRule ^$ /domain/website.php [QSA,NC]

Problem ist jetzt allerdings (genau wie bei Deiner Ausgangsfrage), dass ich keine 301 Umleitungen der alten URL-Struktur auf die neue hinbekomme. Noch schlimmer, über die alten URLs werden die Dateien gar nicht mehr aufgerufen :-(

redirect permanent funktioniert nicht.

Redirect http://www.domain.de/website.php&id=bla http://www.domain.de/bla

Wer kann helfen?

Viele Grüße,
Hönislav
 
Zurück
Oben