Seite 1 von 1

Umleiten von www.domain.de/verzeichnis/hersteller/modell/

Verfasst: 27.08.2008 00:14
von Termi
Moin,

nach einer Stunde probieren komme ich leider nicht weiter und hoffe auf Tips.

Ich habe eine Datenbank, in der Mobiltelefone stehen. Eine Abfrage könnte dann so aussehen:

www.domain.de/cellphones/nokia/7110/

Dies soll umgeleitet werden zu

www.domain.de/gsmphones.php?brand=nokia&model=7110

Hatte es so probiert:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/cellphones/[A-z]+/[A-z]+/$
RewriteRule ([A-z]+)/([A-z]+)/$ gsmphones.php?brand=$1&model=$2 [R]

Es soll nur das (nicht existierende) Verzeichnis /cellphones/ umgeleitet werden, da ja echte
Unterverzeichnisse existieren, die nicht umgeleitet werden sollen.

Was mache ich falsch und wie mache ich es richtig? Freue mich auf Tips!

Danke,

Termi

Verfasst: 27.08.2008 08:48
von Gumbo

Code: Alles auswählen

RewriteRule ^cellphones/([A-Za-z]+)/([A-Za-z]+)/$ /gsmphones.php?brand=$1&model=$2 [L]

Verfasst: 28.08.2008 00:09
von Termi
Hi Gumbo,

danke für den Tip. Leider funktioniert dies bei mir weder auf dem localhost, noch auf dem eigentlichen Server. Auf beiden läuft ein Apache2 mit PHP5.
Beim Aufruf von www.skyynet.de/cellphones/Nokia/7110/ bekomme ich nur mein 404er Fehlerdokument :-(

Meine .htaccess sieht so aus:

Code: Alles auswählen

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/cellphones/[A-z]+/[A-z]+/$
RewriteRule ^cellphones/([A-Za-z]+)/([A-Za-z]+)/$ /gsmphones.php?brand=$1&model=$2 [R]

ErrorDocument 401 /error401.php
ErrorDocument 404 /error404.php


Das [R] statt dem [L] verstehe ich so, dass das Redirect sichtbar ist, was ich zu Testzwecken so möchte. Korrekt?

Danke!

Termi

Verfasst: 28.08.2008 10:51
von Gumbo
Welche Zeichen sind denn als Werte erlaubt?

Verfasst: 28.08.2008 17:14
von Termi
Es sind Buchstaben und Zahlen erlaubt. Ich habe den Eindruck, das Rewrite greift gar nicht. Müßte er mir bei [R] nicht den Redirect in der URL Zeile anzeigen?

Nochmal. Aufgerufen werden kann www.skyynet.de/cellphones/Nokia/7110 oder
www.skyynet.de/cellphones/Siemens/S25
www.skyynet.de/cellphones/Apple/iphone
oder ähnlich Sinnvolles.


Ich wollte mich halt mal mit url rewriting beschäftigen. Sonst könnte ich ja auch ganz krass per 404er Dokument den referer abfragen und dann per header die neue URL schreiben. Wäre aber weder elegant, noch suchmaschinenoptimiert.

Verfasst: 28.08.2008 17:39
von Gumbo
Das Suchmuster muss nur durch Zahlen erweitert werden:

Code: Alles auswählen

RewriteRule ^cellphones/([A-Za-z0-9]+)/([A-Za-z0-9]+)$ /gsmphones.php?brand=$1&model=$2 [L]

Danke, es wird besser

Verfasst: 24.09.2008 16:01
von Termi
Gumbo hat geschrieben:Das Suchmuster muss nur durch Zahlen erweitert werden:

Code: Alles auswählen

RewriteRule ^cellphones/([A-Za-z0-9]+)/([A-Za-z0-9]+)$ /gsmphones.php?brand=$1&model=$2 [L]


Danke! Das bringt mich erstmal weiter. Jetzt passiert was, wenn auch noch nicht ganz das Richtige.
Ich habe das obige Suchmuster aktiviert und muss nun nur noch ein <base href=""> setzen, damit Grafiken & CSS geladen werden.

Ungeachtet der falschen Pfade werden mir aber leider noch nicht die korrekten Variablen übergeben. Also:

in der .htaccess steht:

Code: Alles auswählen

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/cellphones/[A-z0-9]+/[A-z0-9]+/$
RewriteRule ^cellphones/([A-Za-z0-9]+)/([A-Za-z0-9]+)$ /gsmphones.php?brand=$1&model=$2 [L]


Der Aufruf von...
www.skyynet.de/gsmphones.php?brand=Nokia&model=7110
...funktioniert prima

Der Aufruf von...
www.skyynet.de/gsmphones/Nokia/7110
...leider nicht.

Noch eine Idee, was ich übersehen haben könnte?

Danke!

Verfasst: 24.09.2008 20:18
von Gumbo
Das Suchmuster trifft auch nur auf URL-Pfade zu, die mit „/cellphones/“ beginnen.

Verfasst: 25.09.2008 12:36
von Termi
Gumbo hat geschrieben:Das Suchmuster trifft auch nur auf URL-Pfade zu, die mit „/cellphones/“ beginnen.


Stimmt. Hatte ich verwuselt. Ich habe mal den Admin meines Servers gefragt und der hat es wie folgt korrigiert:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} ^/cellphones/([A-z0-9]+)/([A-z0-9]+)/*$
RewriteRule ^cellphones/([A-Za-z0-9]+)/([A-Za-z0-9]+)$ /gsmphones.php?brand=$1&model=$2 [R=301]
RewriteRule ^cellphones/([A-Za-z0-9]+)/([A-Za-z0-9]+)/$ /gsmphones.php?brand=$1&model=$2 [R=301]


Jetzt klappt alles. Danke für alle Hinweise. Wer Infos zu einem Handy sucht, kann das jetzt tun. Sind aktuell über 1500 Geräte drin.

Ach ja, aus gegebenem Anlaß eine kleine Schleichwerbung am Rande. Wenn Ihr einen guten Webhoster sucht, bei dem man mit solchen Problemen nicht bei einem "Hotline" Mäuschen verhungert, sondern per E-Mail und Telefon einen Admin bekommt, der Eure Probleme direkt online behebt, guckt Euch mal http://www.bytecamp.net an.