variables urldesign: index.php?site=news&action=archiv&a

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

variables urldesign: index.php?site=news&action=archiv&a

Beitragvon Xanacas » 24.04.2009 00:19

ich bin schon eine ganze zeit am url design dran, allerdings entdecke ich immerwieder einen fehler, gerade wenn ich denke, ja jetzt gehts, kommt der nächste error.
Ich habe mir gerade mal so nen kleinen übungsbereich zusammengebaut:
http://fg-lan.de/modrewrite/
in diesem fall ist das der feste pfad, daran ändert sich in meiner testumgebung nichts, allerdings möchte ich das meine rewrite rules davon unabhängig sind und fast überall einsetzbar sind (in einem gewissen rahmen).
so nun aber zum eigendlichen:
beispiellink: http://fg-lan.de/modrewrite/index.php?s ... ard=1&id=1
aus diesem link soll in der urlleiste folgender link werden: http://fg-lan.de/forum/board/1/id/1
also das site1 fällt weg, weil der teil eh klar ist, danach sollen alle variablen und deren werte in einzelne "vordner" gepackt werden.
ich möchte das die modrewrite auf unterschiedliche anzahlen von variablen reagieren kann.
und dann sollen natürlich auch die links nach obigem muster wieder zusammen geabut und aufgerufen werden.
folgendes habe ich mir schon zusammengesucht, allerdings klappt es nichti ganz und das ergebnis ist nicht zufriedenstellend:
Code: Alles auswählen
Options -MultiViews
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /index\.php\?site=([^&\s]+)&*([^=]*)=([a-z0-9]*)
RewriteRule ^index\.php$ /%1\/%2\/%3\/%4\/%5\/ [R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)\/$ index.php?site=$1
RewriteRule ^([^/]+)\/([^/]+)\/([^/]+)\/$ index.php?site=$1&$2=$3
RewriteRule ^([^/]+)\/([^/]+)\/([^/]+)\/([^/]+)\/([^/]+)\/$ index.php?site=$1&$2=$3&$4=$5


hoffe ihr habt mein problem verstanden und könnt mir helfen!

danke!
Xanacas
.
.
 
Beiträge: 12
Registriert: 16.04.2009 18:06

Beitragvon Gumbo » 24.04.2009 08:49

mod_rewrite ist dafür nicht besonders geeignet. Mach das lieber mit PHP.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon Xanacas » 24.04.2009 12:25

mit php? da brauch ich mal nen eifaches beispiel, da kann ich mir gerade keinen reim drauf machen....
könnte mir da einer was posten?
Xanacas
.
.
 
Beiträge: 12
Registriert: 16.04.2009 18:06

Beitragvon Gumbo » 24.04.2009 13:23

Prüfe welche URL angefragt wurde (siehe $_SERVER['REQUEST_URI']) und leite bei Bedarf auf die richtige URL weiter beziehungsweise lasse die Anfrage ins Leere laufen. Alle Anfragen, die nicht auf eine Datei abgebildet werden können, kannst du mit folgender Regel abfangen:
Code: Alles auswählen
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ index.php [L]
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon Xanacas » 24.04.2009 16:43

ok, allerdings müsste ich auf diese weise meine links alle noch umschreiben,..
oder kann ich dafür wieder rewrite mod verwenden, also damit die urls entsprechend in der urlleiste dargestellt werden!?
Xanacas
.
.
 
Beiträge: 12
Registriert: 16.04.2009 18:06

Beitragvon Gumbo » 24.04.2009 16:52

Du solltest schon die „neuen“ URLs angeben.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon Xanacas » 24.04.2009 17:50

es handelt sich allerdings um das script webspell welches ich "bearbeiten" wollte, da alle link anpassen wäre schon sehr aufwenidig :(
Xanacas
.
.
 
Beiträge: 12
Registriert: 16.04.2009 18:06

Beitragvon Gumbo » 24.04.2009 17:56

Vielleicht verstehst du den Zweck und die Funktionsweise des mod_rewrite nicht. mod_rewrite dient dazu, an den Server gerichtete Anfragen intern umzuschreiben oder extern weiterzuleiten.
Wenn du nun die „alten“ URLs „/modrewrite/index.php?site1=forum&board=1&id=1“ extern zu „/forum/board/1/id/1“ weiterleiten und diese dann wieder intern zu „/modrewrite/index.php?site1=forum&board=1&id=1“ umzuschreiben, ist das zwar möglich, führt aber zu einer Verdoppelung der Anfragen. Und das ist nicht sinnvoll.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier


Zurück zu URL-Design

Wer ist online?

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