Webstatt.org - Community seit 2006 - 2012 (2024?)

mod_rewrite Verzeichnisse vortäuschen

user-344
07.09.2007 11:28

Hallo Zusammen

mich plagt zur Zeit eine Wissensfrage, die ich schon länger aufzudecken zu versuche...lächeln

Wie kann man mit mod_rewrite Verzeichnisse einfach vortäuschen?
Also ala: domain.ch/toplink/sublink/keyword zum beispiel...

macht das jemand von Euch und könnte mir zur Veranschaulichung vielleicht ein kleines Schnipsel posten?lächeln

vielen danklächeln

Avatar user-345
07.09.2007 12:54

Einfach in eine .htaccess Datei folgendes schreiben

RewriteEngine On
RewriteRule ^ordnerName/ordnername/ordner$ einedatei.php

Der erste Teil (zwischen ^ und $) ist der Teil, den man im Browser eingibt. der zweite Teil stellt die Datei da, die wirklich vorhanden ist und aufgerufen wird.


EDIT:
Um Variablen zu übergen, muss die RewriteRule so aussehen


RewriteRule ^ordner/([0-9]+)/(.*)$ datei.php?id=$1&action=$2

Avatar user-162
07.09.2007 15:23

Auf modrewrite.de hat es einige Beispiele und eine Syntaxübersicht über das mod_rewrite-Modul.

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
user-344
07.09.2007 17:58

danke euch beiden!

dann ist es nur noch das problem, dass man die navigation die ganze zeit anpassen muss... da, wenn man sich schon auf der 3. ebene aufhält, der link nur noch "keyword" lauten darf und nicht der ganze: "toplink/sublink/keyword"... ansonsten macht er daraus:
"toplink/sublink/keyword/toplink/sublink/keyword"...

sprich es läuft wahrscheinlich auf ein template system hinaus... und eine gekünstelte orderstruktur wirklich zu unterhalten...

falls es andere möglichkeiten gibt, nur heraus mit der sprachelächeln
gruss

Avatar user-162
07.09.2007 18:28

du kannst mit <base href="www.abc.de" /> den Grundlink festlegen, von dem die relativen Links der HTML Seite aus gehen.

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
user-344
09.09.2007 19:30

wunderbar, dank nic's effizienten hilfestellungen, habe ich jetzt doch noch die lösung gefunden... (und begriffen).

Hier ein Bsp, falls es mal jemand braucht:


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<base href="http://url.com/htaccess/" />
</head>

<body>
<p><a href="home">Home</a> </p>
<p><a href="unternehmen">Unternehmen</a><br />
- <a href="unternehmen/mitarbeitende">Mitarbeitende</a> <br />
- <a href="unternehmen/leitfaden">Leitfaden</a> </p>
</body>
</html>


Die htaccess Datei sieht dann so aus:

DirectoryIndex index.php

RewriteEngine On

RewriteBase /htaccess/
RewriteRule ^home$ index\.php?toplink=home&id=0 [L]
RewriteRule ^unternehmen$ index\.php?toplink=unternehmen&id=0 [L]
RewriteRule ^unternehmen/mitarbeitende$ index\.php?toplink=unternehmen&id=1 [L]
RewriteRule ^unternehmen/leitfaden$ index\.php?toplink=unternehmen&id=2 [L]


Wichtig ist:

<base href="http://url.com/htaccess/" />

und

RewriteBase /htaccess/

Ich hoffe das hilft!

ps. nochmals danke an user-162 lächeln

Avatar user-194
11.09.2007 11:23

Original von user-162
Am einfachsten machst du es so:
<base href="<?php echo $_SERVER['REQUEST_URI']; ?>" />

foo.php?
%22%3E%3Cscript%3Ealert%28document.cookie%29%3B%3C%2Fscript%3E%3Cb+name%3D%22foo

web4: http://www.colder.ch/news/01-26-2007/24/truth-about-the-last-mod_.html

Avatar user-162
11.09.2007 11:51

ja ich weiss ist mir früher schon aufgefallen, deshalb mein erstes Edit.
Jetzt ist es komplett weg und hoffentlich alle Missverständnisse auch zwinkern

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine