# Virtuelles Verzeichins mit mod rewrite umwandeln?



## unrealzero_php (12. März 2009)

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


```
RewriteRule ^([-a-zA-Z\/]*)$ index.php?navi=$1&%{QUERY_STRING}
```


----------



## Gumbo (12. März 2009)

Ich würde nur die Anfragen an das PHP-Skript weiterleiten und den Rest mit PHP erledigen:
	
	
	



```
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ index.php [L]
```


```
$_SERVER['REQUEST_URI_PATH'] = preg_replace('/\?.*/', '', $_SERVER['REQUEST_URI']);
$segments = explode('/', trim($_SERVER['REQUEST_URI_PATH'], '/'));
```


----------



## unrealzero_php (12. März 2009)

Gumbo hat gesagt.:


> Ich würde nur die Anfragen an das PHP-Skript weiterleiten und den Rest mit PHP erledigen:
> 
> 
> 
> ...



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?


----------



## Gumbo (12. März 2009)

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.


----------



## unrealzero_php (12. März 2009)

Gumbo hat gesagt.:


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

```
$_SERVER["DOCUMENT_ROOT"]
```


----------



## Gumbo (12. März 2009)

Nicht Dateisystempfade sondern URL-Pfade. Der Browser hat ja keinen direkten Zugriff auf das Dateisystem.


----------



## unrealzero_php (12. März 2009)

Gumbo hat gesagt.:


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

```
RewriteRule ^([-a-zA-Z\/]*)/([-a-zA-Z\/]*)$ index.php?navi=$1&subnavi$2&%{QUERY_STRING}
```


----------



## Gumbo (12. März 2009)

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:
	
	
	



```
<base href="/">
```


----------



## unrealzero_php (12. März 2009)

Gumbo hat gesagt.:


> 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:
> 
> 
> 
> ...



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"?


----------

