• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

htaccess rewrite rule ?

badenixe63

New member
Hallo Leute,

ich habe mich schon durch mehrere tutorials durchgewuehlt, aber irgendwie finde ich noch nicht den richtigen ansatz...

auf einige Seiten sieht man es immer wieder, dass in der url am ende eine variable als Ordnername angegeben wird, also auch auf dynamisch generierten seiten haette man dann sowas wie:

http://www.cooleseite.de/irgendeine_variable

und die schaffen es dann das ganze wohl intern auf sowas umzuleiten ohne, dass der user irgendetwas davon mitbekommt:

/index.php?variable=irgendeine_variable

wie geht das einfach und praktisch mit htaccess ?
 
RewriteEngine On
RewriteRule ^(irgendeine_variable)$ index.php?variable=$1 [L,NC]

oder generischer:
RewriteRule ^([^/]*) index.php?variable=$1 [L,NC]
 
hi, danke fuer die antwort...

klingt recht gut, aber ich verstehe leider noch nicht, was da vor sich geht... koennte das vllt. noch mal jemand genau beschreiben ??

P.S.: wie kriege ich das ganze non-case sensitive, also, dass der inhalt der variable immer als nur kleinbuchstaben gesendet wird? und wie kann ich ausschliessen, dass auch tatsaechliche ordner weitergeleitet werden... z.B. der ordner in dem ich css oder bilder habe...
 
Zuletzt bearbeitet:
was da vor sich geht:
Wenn ein http-request reinkommt dann schaut der apache sich den an. Der Reihe nach werden alle RewriteRules abgehandelt, wenn der reguläre ausdruck einer Regel matcht, dann wird diese Regel angewendet. Das [L] flag hinter meiner Beispiel-Regel sagt außerdem, dass nach dieser Regel keine weitere mehr angewendet werden soll

wenn jetzt also ein request reinkommt der images/ anfragt, trifft die regel und es wird index.php?variable=images aufgerufen. Um das zu verhindern gibt es zwei möglichkeiten: entweder du sagst explizit welche wörter dahinter umgeleitet werden sollen, also:
RewriteRule ^(seite1|irgendeine_variable|seitedroelf|to_be_continued) index.php?variable=$1 [L,NC]
oder su sagst explizit welche wörter nicht umgeleitet werden sollen:
RewriteRule ^(^images|css) index.php?variable=$1 [L,NC]

P.S.: wie kriege ich das ganze non-case sensitive, also, dass der inhalt der variable immer als nur kleinbuchstaben gesendet wird?
gar nicht, das NC hinter der rule bedeutet übrigens no-case, also beachtet die regel keine groß- und kleinschreibung, diese Regel:
RewriteRule ^(seite|seite2) index.php?variable=$1 [L,NC] trifft also sowohl zu wenn man example.com/seite aufruft, aber auch wenn man example.com/SEITE aufruft, wenn man das nicht will kann man das NC weglassen, dann gibts bei /SEITE nen 404
 
printe dir mal $_SERVER, in request_uri oder so kannste rausfiltern was der client "in der adresszeile hat"
Edit:
PHP:
if(false !== strpos($_SERVER['REQUEST_URI'], 'index.php')) {
	// redirect zur rewritten url
}
 
ok, ich habs versucht und in php scheint es auch zu klappen... allerdings nicht in htaccess.

ist es nicht moeglich die request_url schon in htaccess zu vergleichen ?

RewriteCond %{REQUEST_URI} blablabla

so in der Richtung ?
 
Zurück
Oben