Willkommen in der Webstatt
User-1 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?
User-2 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

User-3 am 07.09.07 17:23

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

User-1 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

User-3 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.

User-1 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 xyz-52 :)

User-4 am 11.09.07 13:23

Quote
Original von xyz-52
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

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

User-3 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