Willkommen in der Webstatt Zum Webstatt Blog und Stories
web4 am 07.09.07 13:28

Hallo Zusammen

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

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?:)

vielen dank:)

netcup.de Warum gibt es hier Werbung?
webmaster333 webmaster333 am 07.09.07 14: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

der_nic der_nic am 07.09.07 17:23

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

web4 am 07.09.07 19: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 sprache:)
gruss

der_nic der_nic am 07.09.07 20:28

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

web4 am 09.09.07 21: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 der_nic :)

hoffie hoffie am 11.09.07 13:23

Quote
Original von der_nic
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

der_nic der_nic am 11.09.07 13: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 ;)

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt