mod_rewrite - Unterordner simulieren

sipoh

Erfahrenes Mitglied
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:

Code:
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.
 
Du musst das Suchmuster weiter spezifizieren. Der Ausdruck .* ist zu allgemein, da er auf alle möglichen Zeichenfolgen zutrifft.
Code:
RewriteRule   ^profil/([^/]+)\.html$ profil.php?my=$1 [L]
RewriteRule ^([^/]+)\.html$ $1.php [L]
 
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

Code:
RewriteRule   ^profil/([^/]+)\.html$ profil.php?my=$1 [L]
RewriteRule ^([^/]+)\.html$ $1.php [L]
 
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 /.
 

Neue Beiträge

Zurück