• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

.htaccess - ist das möglich?

djfabi

Mitglied
Hallo,
ich möchte eine Webseite machen die wie folgt aussieht:
Code:
www.domain.com/index.php?lang=german&article=start

So in etwa, ich möchte es dann via .htaccess so aussehen lassen:
Code:
www.domain.com/de/start

Das ist ja soweit ich weiß möglich, aber jz kommt mein Problem:
Ich habe bei der 2.ten Unterseite noch vor einen dritten Parameter dranzuhängen:
Code:
www.domain.com/index.php?lang=german&article=zwei&name=max.mustermann
Und will es dann so aussehen lassen:
Code:
www.domain.com/de/max.mustermann



Das Problem: Wenn man einfach nur auf meiner Domain ist, und einfach /max.mustermann dranhängt, weiß ja htaccess nicht, welcher Parameter gesetzt worden ist?

Weil der article Parameter ist ja nicht gesetzt, bzw wird dann mit Max Mustermann bestückt.

Habt ihr irgenteine Idee/Vorschläge ?

Gruß
 
Die RewriteRule-Angabe ermöglicht auch reguläre Ausdrücke. Du könntest daher eine Zeile schreiben in der Du prüfst, ob vor dem ersten / eine Zeichenfolge steht die nur aus 2 Zeichen besteht (de, en ..) oder auch auf genau diese Zeichenfolgen prüfen, z.B. so:

Code:
RewriteRule ^de/($1) index.php?lang=german&article=zwei&name=$1
 
Ok, aber wie ist denn das?
Ich meine der Client der meine Seite aufruft, sieht das ja anders.
Z.B. sie mein User das hier so:
Code:
www.domain.com/de/start
so wenn er jetzt aber auf zwei zugreifen will aber nur name angibt also so:
Code:
www.domain.com/de/max.mustermann

So jetzt wurde ja der name Parameter gesetzt, aber keiner weiß davon?
Also es könnte ja auch der article Parameter gesetzt sein, bzw. in meinem Beispiel garnicht?
Kann mir das irgentwer erklären?
 
Ok dann werde ich es nochmal versuchen :D

So sieht meine Domain ohne mod_rewrite aus:
Code:
www.domain.com/index.php?lang=german&article=start
So, das mit mod_rewrite umzuschreiben ist ja denke ich noch einfach.
ZU dem hier:
Code:
www.domain.com/de/start
So wenn ich jetzt aber auf article=zwei bin, gibt es ja noch den dritten Parameter:
Code:
www.domain.com/?lang=german&article=zwei&id=max.mustermann
So jz mit mod_rewrite:
Code:
www.domain.com/de/max.mustermann
So soll es aussehen, denke ich auch kein Problem
So aber jetzt kommt es, das Problem!
Mein Client sieht die Domain so:
Code:
www.domain.com/de/start
So scheint ja gut, jetzt will er selber in der URL-Leiste die URL verändern.
Er will es so eingeben:
Code:
www.domain.com/de/max.mustermann
So wurde es ja auch überschrieben, aber jetzt mal meine Verständnis Frage:
Wie wird denn jetzt der article Parameter überliefert?
Weil es ist ja jetzt nur der id Parameter übergeben, wie ist das denn Verständlich?
Ich habe nämlich nicht soooo viel Ahnung von jeder Ecke der .htaccess Kunst :D


Ich hoffe es war versändlich O:
 
Ah, jetzt versteh ich worauf Du hinaus willst.

Du hast also 3 Parameter, in der URL stehen aber nur 2. Also hast Du 2 Möglichkeiten, die abhängig von deiner Programmierung der Webseite (und der damit vorgegebenen Bedeutung der Parameter) sind:

a) Du schreibst die article-Werte fest als mod_rewrite-Rule in die htaccess-Datei. Hat den Nachteil, dass das sehr undynamisch ist und Du jedes Mal die htaccess-Datei anpassen müsstest, wenn Du einen neuen article-Wert hat.

b) Du erweiterst die URL um den noch fehlenden article-Wert. Also mach aus:
Code:
www.domain.com/de/max.mustermann

z.B. so eine URL
Code:
www.domain.com/de/zwei/max.mustermann

und schreib die RewriteRule entsprechend um, so dass alle 3 Parameter ausgelesen und korrekt weitergegeben werden.

Tipp: Wenn Du mit mehreren RewriteRules arbeitest und verhindern möchtest, dass eine zutreffende durch eine später in der Datei stehende "überschrieben" wird, verwende den Schalter L in der RewriteRule-Anweisung:
Code:
RewriteRule quelle ziel [L]
 
Zurück
Oben