# mod_rewrite - Unterordner simulieren



## sipoh (6. Februar 2009)

Hallo,

ich versuche gerade, einen Unterordner zu simulieren:

Folgende generierte URL

http://domain.de/user.php?id=12

soll zu 

http://domain.de/profil/username.html

werden.

Dazu habe ich folgende Regel erstellt:


```
RewriteEngine on

RewriteBase /

RewriteRule   ^profil/(.*).html$ profil.php?my=$1 [L]

RewriteRule ^(.*).html$ $1.php
```

Den Link rufe ich so auf: http://domain.de/profil/username.html

Nur leider führt das dazu, dass alle Links auf der Seite dann das /profil/ angehängt bekommen. Bei dem Link Profil sogar 2 mal.


----------



## Gumbo (6. Februar 2009)

Du musst das Suchmuster weiter spezifizieren. Der Ausdruck .* ist zu allgemein, da er auf alle möglichen Zeichenfolgen zutrifft.
	
	
	



```
RewriteRule   ^profil/([^/]+)\.html$ profil.php?my=$1 [L]
RewriteRule ^([^/]+)\.html$ $1.php [L]
```


----------



## sipoh (6. Februar 2009)

Ok. Das leuchtet ein. Trotzdem werden alle Links *nach* dem Klicken auf "profil" mit einem "profil" versehen. 

Also wird aus http://www.domain.de/index.html domain.de/profil/index.html

Aus domain.de/profil/username.html wird domain.de/profil/profil/username.html


```
RewriteRule   ^profil/([^/]+)\.html$ profil.php?my=$1 [L]
RewriteRule ^([^/]+)\.html$ $1.php [L]
```


----------



## Gumbo (6. Februar 2009)

Ach das meinst du. Nun, relative URLs werden immer von einer Basis-URL aus aufgelöst, die – falls nicht explizit angegeben – immer die URL der aktuellen Ressource ist.
Du müsstest die Ressourcen also entweder durch absolute Pfade/URLs angeben, oder aber explizit eine andere Basis-URL angeben (siehe HTML-Element BASE), beispielsweise die Wurzel des URL-Pfads /.


----------

