Virtuelles Verzeichins mit mod rewrite umwandeln?

unrealzero_php

Erfahrenes Mitglied
Hallo zusammen

Möchte auf meiner Website Top- bzw. Subnavigation als „Verzeichnis“ über de URL übergeben.

Beispiel:

http://www.domain.tld/gallery ? Navigation

http://www.domain.tld/gallery/winter ? Subnavigation


Nun habe ich versucht das ganze über mod rewrite zu lösen.

Ich habe es mit folgender Rule geschafft die Navigation als index.php?navi=gallery umzuleiten. Wie ist es jedoch möglich, auch die Subnavigation als GET zu senden (index.php?navi=gallery&subnavi=winter)?

Code:
	RewriteRule ^([-a-zA-Z\/]*)$ index.php?navi=$1&%{QUERY_STRING}
 
Ich würde nur die Anfragen an das PHP-Skript weiterleiten und den Rest mit PHP erledigen:
Code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ index.php [L]
PHP:
$_SERVER['REQUEST_URI_PATH'] = preg_replace('/\?.*/', '', $_SERVER['REQUEST_URI']);
$segments = explode('/', trim($_SERVER['REQUEST_URI_PATH'], '/'));
 
Ich würde nur die Anfragen an das PHP-Skript weiterleiten und den Rest mit PHP erledigen:
Code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ index.php [L]
PHP:
$_SERVER['REQUEST_URI_PATH'] = preg_replace('/\?.*/', '', $_SERVER['REQUEST_URI']);
$segments = explode('/', trim($_SERVER['REQUEST_URI_PATH'], '/'));

Bei meinem ersten Versuch wird mit auch alles als $_GET übergeben (navi=gallery/winter) ich kann diese Daten in PHP auch verarbeiten. Nur irgendwie habe ich das Problem, dass meine index.php die CSS-Datei nicht mehr anwendet und es mir die ganze Darstellung verzieht. Woran kann das liegen?
 
Das liegt daran, dass relative URL-Pfad nun von der neuen URL aus aufgelöst werden. Ein „css/quux“ wir dann bei „/foo/bar“ zu „/foo/css/quux“ aufgelöst statt zu „/css/quux“. Verwende einfach absolute URL-Pfade oder gleich absolute URLs.
 
Das liegt daran, dass relative URL-Pfad nun von der neuen URL aus aufgelöst werden. Ein „css/quux“ wir dann bei „/foo/bar“ zu „/foo/css/quux“ aufgelöst statt zu „/css/quux“. Verwende einfach absolute URL-Pfade oder gleich absolute URLs.

Wenn ich das richtig verstehe soll ich bei allen Images, CSS-Datein, Includes den absoluten Pfad verwenden?
PHP:
$_SERVER["DOCUMENT_ROOT"]
 
Nicht Dateisystempfade sondern URL-Pfade. Der Browser hat ja keinen direkten Zugriff auf das Dateisystem.
 
Nicht Dateisystempfade sondern URL-Pfade. Der Browser hat ja keinen direkten Zugriff auf das Dateisystem.

Gibt es denn keine Möglichkeit die absoluten Pfade zu umgehen?

Man müsste doch irgendwie die "Verzeichnisse" bereits mit Mode Rewrite eliminieren können und einfach als $_GET übergeben?
Code:
  RewriteRule ^([-a-zA-Z\/]*)/([-a-zA-Z\/]*)$ index.php?navi=$1&subnavi$2&%{QUERY_STRING}
 
Es ist der Browser, der die relativen URLs im HTML-Dokument zu absoluten auflöst, nicht der Server. Du kannst wohl explizit eine abweichende Basis-URL für das Dokument angeben, etwa:
HTML:
<base href="/">
 
Es ist der Browser, der die relativen URLs im HTML-Dokument zu absoluten auflöst, nicht der Server. Du kannst wohl explizit eine abweichende Basis-URL für das Dokument angeben, etwa:
HTML:
<base href="/">

Erst mal herzlichen Dank für die Unterstützung, aber irgendwie scheint das Ganze nicht so zu funktionieren wie ich mir das vorgestellt habe.

Es muss doch möglich sein das "virtuellen Verzeichnisse" die in der Browserzeile angegeben werden via .htaccess abgefangen und an die index.php mittels GET weiterzugeben werden können ohne dass dadurch ein Problem mit den Pfadangaben entsteht. Es handelt sich doch lediglich um "pseudo Verzeichnisse"?
 
Zurück