Verständnisfrage zu Rewrite, Urls, Links

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

Verständnisfrage zu Rewrite, Urls, Links

Beitragvon Flixus » 30.12.2009 13:46

Hallo,

bin neu hier und Neuling in Sachen mod rewrite. Habe hier schon das ein und andere Thema gelesen aber nicht wirklich so die Grundlagen gefunden. Möchte auch nicht mir passende rewrites suchen, möchte das eher verstehen. Sprich, ich habe ein kleine CMS geschrieben bzw bin dabei. Da mich nun die URLs nerven wo ich 1-3 Parameter noch mit übergebe möchte ich das nun gleich in /xyz/ Struktur.

Soweit wie ich das verstanden habe bis jetzt muss ich meine dynamischen Links im CMS so gestalten "/impressum" und nicht "index.php?site=content&cat_id=6&cat=06". Die URL "index.php?site=content&cat_id=6&cat=06" ist unsinn, ich arbeit noch dran Wink...eines von beiden cat_id oder cat kann ich programmiertechnisch weglassen.

Nun stellt sich für mich die Frage, wie und was nehme ich um eine gescheite URL als Link zu haben. Nehmen wir an ich habe die Menüpunkte "Impressum" und "Meine Galerie" und "Äste sind klein".

Ich arbeite bisher mit der ID des Menüeintrages und hole den jeweiligen DB Eintrag (Content), aber das ist mir wie gesagt nicht mehr zeitgemäß und sieht unschön aus.

Ich könnte nun jetzt z.B. den Namen aus DB nehmen "Äste sind klein" und erstmal intern in Aeste-sind-klein umwandeln und dann als Link im CMS einfach "/Aeste-sind-klein" machen und diesen jetzt als Link bei "Äste sind klein" hinterlegen anstatt "index.php?site=content&cat_id=6&cat=06"?

Muss/Sollte man Ä und Leerzeichen jeweils ändern?
Sollte man mit den Namen vom Menü überhaupt arbeiten oder nur den Ids?

Den Pfad "/Aeste-sind-klein" den ich nun hinter "Äste sind klein" habe müsste ich letztendlich mit modrewrite zu index.php?site=Aeste-sind-klein machen und anhand dessen den entsprechenden Content aus Datenbank holen?

Ist das eine gute Idee oder wie sollte man das mit Menü / Links und den dazugehörigen Content lösen?
Angesichts Modrewrite/Rewrite Regel bräuchte ich später sicher Hilfe, aber erstmal wissen wie was warum...

Danke für Eure Mühe, Zeit und Antworten.

Edit: können mehrere Regeln abgearbeitet werden? z.b. ich habe noch ab und an "&monat=1&jahr=2010" in der url, z.b. /events/1/2010, ginge das jenach dem ob vorhanden das extra wieder in "&monat=1&jahr=2010" umzuwandeln?
Flixus
.
.
 
Beiträge: 2
Registriert: 30.12.2009 13:14

Beitragvon Gumbo » 07.01.2010 18:52

Am besten lässt du dein CMS die URLs generieren und interpretieren, da es ja schließlich am besten weiß, was sie bedeuten. Und mit mod_rewrite lenkst du dann nur die Anfragen an dein CMS, etwa:
Code: Alles auswählen
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ index.php [L]
Der angefragte URL-Pfad steht dann zusammen mit der angefragten Query in „$_SERVER['REQUEST_URI']“. Diesen kannst du dann in die einzelnen Pfadsegmente zerlegen und weiterverarbeiten.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon Flixus » 02.02.2010 20:06

Hallo,

danke für den Tipp und den Code, ich probier es dann mal. Bin mir selbst halt noch nicht ganz
im klaren wie ich die urls im cms mache bzw wie es dann mit eventuellen modulen laufen wird.

danke und bis bald ;)...

Grüße
Flixus
.
.
 
Beiträge: 2
Registriert: 30.12.2009 13:14

Beitragvon Ziegenpeter » 29.04.2010 10:03

Hallo Markus,

es trifft genau das, was Flixus beschreibt auch auf meine Arbeit an einem kl. CMS zu.

Ich kann es nur nicht verstehen, was Du meinst. Ist es besser schon im CMS die Links richtig zu formatieren und auszugeben also aus z.B.:
http:/localhost/Site/index.php?site=live&loc=sub&id=16&catalias=neue_seiten

den link so zu formatieren:
http:/localhost/Site/index.php/neue_seiten

und die htaccess Regel

Code: Alles auswählen
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ index.php [L]


filtert dann nur das "index.php" raus,

trotzdem wird dann die index.php gefunden und dort kann ich dann z.B. mit:
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];


auf die URL zugreifen und weiterverarbeiten.
Ja, mir fehlt noch das grundsätzliche Verständnis von mod_rewrite aber vieleicht kannst Du mir ja helfen.

vielen Dank

Peter Z.
Ziegenpeter
.
.
 
Beiträge: 4
Registriert: 28.04.2010 17:06

Beitragvon Gumbo » 02.05.2010 18:37

Mit mod_rewrite können nur von außen kommende Anfragen intern umgeschrieben oder extern weitergeleitet werden. Es müssen also schon die bevorzugten URLs ausgegeben werden, damit diese angefragt werden können.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

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