mod_rewrite / verzeichnisnamen aus URL "entfernen"
michael
- webserver
hallo alle zusammen,
ich unternehme gerade erste gehversuche mit mod_rewrite und glaube ich stehe ziemlich auf dem schlauch.
ich will teile meiner verzeichnisstruktur auf dem server-dateisystem in der URL ausblenden.
auf dem server im dateisystem sieht das z.B. so aus:
/pages/artikel/filme/
/pages/artikel/musik/
/pages/vorstellungen/kino/
/pages/vorstellungen/tv/
nun soll per mod_rewrite die URL so umgesetzt werden,
daß das der pages-ordner verschwinden soll und die URL so angefordert werden kann:
http://www.domain.local/artikel/filme/
http://www.domain.local/artikel/musik/
..
Meine Rewrite Rule dazu sieht so aus:
RewriteRule ^/(.*) /pages/$1
aber irgendwie klappt das nicht so ganz...
ich dachte mir das so:
wird /artikel/filme angefordert, wird das per mod_rewrite mit /pages/artikel/filme "übersetzt".
also der erste slash im pfad ('^/') plus das, "was immer auch danach kommt" ergibt "/pages/" plus "was auch immer danach kommt".
aber das will nicht so wie ich will...? ;-)
weiß da jemand rat?
vielen dank für eure hilfe,
michael
Hi,
mal eine doofe Frage: wäre es nicht sinnvoller, das Verzeichnis /pages einfach zu löschen und dessen Inhalte eine Ebene nach oben zu kopieren, als unnötige Serverlast zu produzieren?
freundliche Grüße
Ingo
ja, da hast du vielleicht nicht ganz unrecht.
aber ich bin nun mal ein ordnungsfanatiker und ich es mag auf meienem server gern blitzblank ;-)
und dazu gehört imho das alle verzeichnisse, die irgendwelche "seiten" enthalten in einem unterordner stecken.
außerdem wollte ich schon immer mal ein bißchen mit mod_rewrite rumspielen ;-)
Hi,
aber ich bin nun mal ein ordnungsfanatiker und ich es mag auf meienem server gern blitzblank ;-)
Du wirst es vielleicht nicht glauben, aber ich auch ;-)
und dazu gehört imho das alle verzeichnisse, die irgendwelche "seiten" enthalten in einem unterordner stecken.
Das wäre mir wiederum viel zu unübersichtlich. Wenn ich z.B. eine Seite lösche, müßte ich bei Deinem Konzept vermutlich in mindestens zwei Verzeichnissen Dateien löschen. Ich finde es einfacher und übersichtlicher, sämtliche Dateien in entsprechende Verzeichnisse für die jeweiligen Rubriken zu setzen - von allgemein genutzten CSS oder JS Dateien oder Grafiken mal abgesehen, die ich lieber im Root sehe.
außerdem wollte ich schon immer mal ein bißchen mit mod_rewrite rumspielen ;-)
das ist freilich ein Grund...
freundliche Grüße
Ingo
Hallo michael,
Meine Rewrite Rule dazu sieht so aus:
RewriteRule ^/(.*) /pages/$1
Du produzierst eine Endlosschleife:
'/artikel/filme' => trifft auf ^/(.*) zu; (.*) == 'artikel/filme'
wird zu: '/pages/artikel/filme'
'/pages/artikel/filme' => trifft auf ^/(.*) zu; (.*) == 'pages/artikel/filme'
wird zu: '/pages/pages/artikel/filme'
'/pages/pages/artikel/filme' => trifft auf ^/(.*) zu; (.*) == 'pages/pages/artikel/filme'
wird zu: '/pages/pages/pages/artikel/filme'
usw.usf.
RewriteCond ist Dein Freund:
RewriteCond %{REQUEST_URI} !^/pages
RewriteRule ^/(.*) /pages/$1 [L]
Das [L] (steht für "last") würde ich prophylaktisch dazutun, auch wenn das hier, da die einzige Regel, wohl nicht notwendig ist.
Viele Grüße,
Christian