mod_rewrite

smisonline2

Mitglied
Hallo,

ich möchte meinen Usern ihren eigenen Bereich über

domain.de/username zur Verfügung stellen

Ich habe null Ahnung von mod_rewrite. Wie kann man sowas am besten realisieren?
 
paar mehr infos wären hilfreich ;)

1. Was für einen "Eigenen Bereich"? Das Profil des Benutzers oder ...?
2. Wie kommt man den sonst auf diesen Bereich? Also über welchen Seitenaufruf (url)?
 
Hallo,

naja, eine Art Userseite, wo sich der User präsentieren kann.

ALso, das er seinen Freunden sagen kann

domain.de/meinname


Aktuell sähe das so aus

domain.de/index.php?m=userarea&c=details&USERID=111....
domain.de/?m=userarea&c=details&USERID=111....

Danke für die Hilfe
 
Zuletzt bearbeitet:
Also direkt example.org/username täte ich sein lassen. Sonst kollidierst du dort nacher mit normalen Systemfunktionen wie logout/login, view, edit, ... (-> angenommen der user nennt sich "login", dann wäre seine "shorturl" example.org/login. Und die würde ich eher für nen Login vorsehen :P )

Besser: example.org/user/username

Rewriterule:
Code:
RewriteRule ^user/(\w+)$ /?m=userarea&c=details&USERID=$1
 
$l wäre dann nicht die ID, sondern der username? oder wie erkennt er sonst die Verbindung?

Über die Subdomain kann man mit mod_rewrite nichts machen ,oder?
 
Zuletzt bearbeitet:
Ja, klar, sorry ;)

Das musst du dann schon über den Namen lösen (aber der sollte ja - wie die ID - auch UNIQUE sein).
 
Danke,

wenn ich das was bei c=****? steht dynamisch ändern möchte. Wie realisiere ich das, das er dann immer den Rest identisch hält?

Und ich habe das alles aktuell im Ordner cms/... liegen. Kann man das auch umschreiben, das er automatisch dieses "überspringt" und daraus eine URL ohne cms macht?

Ichhatte das mal so geändert, aber das scheint nicht die Lösung zu sein, doer?

RewriteRule ^user/(\w+)$ /cms/?m=userarea&c=details&USERID=$1


Die komplette .htaccess sieht so aus und liegt im ROot

# utf8
AddDefaultCharset UTF-8

RewriteEngine On
RewriteBase /cms/
RewriteRule ^user/(\w+)$ /?m=userarea&c=getData&username=$1


Was bewirkt eigentlich ^user/(\w+)$ genau?
 
Zuletzt bearbeitet:
Dann mal aufgedröselt das Ganze.

Was macht
Code:
RewriteRule <match> <redirect-to>
eigentlich?
Ich habe schonmal zwei Platzhalter eingefügt, die das Lesen ein wenig erleichtern sollten.
<match> ist ein sogenannter "Regulärer Ausdruck", der auf die URL oben angewendet wird. Dieser Ausdruck erkennt eben nicht nur statische Zeichenketten, sondern auch variable, oder genauer:

Ein regulärer Ausdruck (englisch regular expression, abgekürzt RegExp oder Regex) ist in der Informatik eine Zeichenkette, die der Beschreibung von Mengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln dient.

Also Basics zu Regulären Ausdrücken sind schonmal Pflicht, ich erkläre nur kurz diesen Regex:
Code:
^user/(\w+)$
	^ Zeichenkettenanfang
	user/ feste Zeichenfolge "user/"
	(\w+) Mindestens(aber auch mehrere) ein Buchstabe, eine Ziffer oder der Unterstrich
	$ Zeichenkettenende

Nun zum <redirect-to>:
Da sollte nun die URL stehen, zu der sozusagen "weitergeleitet" werden soll, wenn der vorhergehende Ausdruck gefunden wurde.
Die Sache mit den Klammern: Wie du siehst, habe ich in der URL ein $1 eingebaut. Diese Variable enthält das, was in dem regulären Ausdruck (<match>) in Klammern steht bzw. deren tatsächliche Ersetzung. In unserem Fall also (\w+), was dem Usernamen entsprechen würde.
Übrigens: Würden in dem Ausdruck mehrere Klammern vorkommen, würde es auch dazu entsprechende variablen geben ($2, $3, $n)
 
Zuletzt bearbeitet:
Zurück