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

Eines der wichtigsten Anwendungsgebiete von mod_rewrite ist das umschreiben von dynamischen in statische URLs um "suchmaschinenfreundliche URLs" zu erzeugen. Aber was ist besser fürs Ranking? http://www.url.com/12_2.htm, http://www.url.com/url,12,2.htm oder doch lieber http://www.url.com/12/2/url/ Fragen zum URL-Design werden hier diskutiert.

Moderator: Super-Mod

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

Beitragvon Termi » 27.08.2008 00:14

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
Termi
.
.
 
Beiträge: 5
Registriert: 27.08.2008 00:07

Beitragvon Gumbo » 27.08.2008 08:48

Code: Alles auswählen
RewriteRule ^cellphones/([A-Za-z]+)/([A-Za-z]+)/$ /gsmphones.php?brand=$1&model=$2 [L]
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon Termi » 28.08.2008 00:09

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
Termi
.
.
 
Beiträge: 5
Registriert: 27.08.2008 00:07

Beitragvon Gumbo » 28.08.2008 10:51

Welche Zeichen sind denn als Werte erlaubt?
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon Termi » 28.08.2008 17:14

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.
Termi
.
.
 
Beiträge: 5
Registriert: 27.08.2008 00:07

Beitragvon Gumbo » 28.08.2008 17:39

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]
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Danke, es wird besser

Beitragvon Termi » 24.09.2008 16:01

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!
Termi
.
.
 
Beiträge: 5
Registriert: 27.08.2008 00:07

Beitragvon Gumbo » 24.09.2008 20:18

Das Suchmuster trifft auch nur auf URL-Pfade zu, die mit „/cellphones/“ beginnen.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon Termi » 25.09.2008 12:36

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.
Termi
.
.
 
Beiträge: 5
Registriert: 27.08.2008 00:07


Zurück zu URL-Design

Wer ist online?

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

cron