domain.de/username/freundeliste/ o. domain.de/username/post

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

domain.de/username/freundeliste/ o. domain.de/username/post

Beitragvon NBG » 04.07.2007 21:55

Hallo,

wie kann ich auf einfache Weise sowas umsetzen:

http://www.domain.de/username
http://www.domain.de/username/
http://www.domain.de/username/freunde
http://www.domain.de/username/freunde/
http://www.domain.de/username/postfach
http://www.domain.de/username/postfach/
...

Aktuell läuft bei mir:

Code: Alles auswählen
RewriteEngine on
RewriteRule ^([a-zA-Z0-9]{3,12})/?$ /index.php?user=$1 [L]


Das funktioniert soweit bei dem Usernamen allein, hängt man aber noch was dran, dann geht es schon wieder nicht mehr.

Bedingungen sollen sein:

- Username mind. 3 Zeichen, maximal 12 Zeichen, mit oder ohne / am Schluss

Ideal wäre immer eine Umleitung auf die index.php... z.B. so index.php?was=username/freunde und ich explode() das dann intern mit PHP und verarbeite es weiter.
NBG
.
.
 
Beiträge: 19
Registriert: 31.01.2006 23:47

Beitragvon Gumbo » 04.07.2007 23:06

Entscheide dich lieber für eine Schreibweise und ziehe diese durch:
Code: Alles auswählen
# ohne Schrägstrich am Ende
RewriteRule   (.+)/$      /$1   [L,R=301]
# mit Schrägstrich am Ende
RewriteRule   (.*[^/])$   /$1/   [L,R=301]

Wenn du die Anfrage sowieso mit PHP noch weiterverarbeitest, können auch gleich alle Anfragen darauf umgeschrieben werden:
Code: Alles auswählen
RewriteCond   %{REQUEST_FILENAME}   !-f
RewriteRule   (.+)   /index.php?was=$1   [L]
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon NBG » 04.07.2007 23:12

Naja ICH würde mich ja für eine Schreibweise festlegen, aber die User benutzen meist beides...

Das hier ist nicht schlecht:

Code: Alles auswählen
RewriteCond   %{REQUEST_FILENAME}   !-f
RewriteRule   (.+)   /index.php?was=$1   [L]


Allerdings landen da auch jegliche (vorhandene) Ordner und .gif-Dateien auch mit drin...
NBG
.
.
 
Beiträge: 19
Registriert: 31.01.2006 23:47

Beitragvon Gumbo » 05.07.2007 11:09

Für die Willkür der Benutzer sind auch die beiden erstgenannte Regeln gedacht, die abweichende Schreibweisen korrigieren. Existente Verzeichnisse und Dateien müsste natürlich noch ausgeschlossen werden.
Code: Alles auswählen
RewriteCond   %{REQUEST_FILENAME}   -d   [OR]
RewriteCond   %{REQUEST_FILENAME}   -f
RewriteRule   .*   -   [L]

# einheitliche URL-Schreibweise
# ohne Schrägstrich am Ende
#RewriteRule   (.+)/$      /$1   [L,R=301]
# mit Schrägstrich am Ende
#RewriteRule   (.*[^/])$   /$1/   [L,R=301]

RewriteRule   (.+)   /index.php?was=$1   [L]
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon NBG » 05.07.2007 17:35

Hallo nochmal,

wie kann es eigentlich sein, dass beim Aufruf von

http://www.domain.de/verzeichnis/

dann durch die Verwendung der .htaccess einfach
automatisch die Datei "verzeichnis.php" eingebunden
wird und die .htaccess in dem Sinne gar nicht mehr umleitet?

Komische Sache...
NBG
.
.
 
Beiträge: 19
Registriert: 31.01.2006 23:47

Beitragvon Gumbo » 05.07.2007 17:52

Deaktiviere mal „MultiViews“:
Code: Alles auswählen
Options -MultiViews
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