Hilfe bei ModRewrite und RegEx

omni

in berlin giebts auch BSD
Hi alle,

bin hier am verzweifeln. ich versuche grad eine Regel für mod_rewrite zu schreiben eigentlich ziemlich simpel aber irgendwie will das einfach nicht :grumble: der giebt mir immer komische sache aus vieleicht kann ja jemand helfen.

Folgende Situation:

url: http://localhost/
naütrlich befindet sich eine index.php im / verzeichnis damit sie als standart angezeigt wird.

jezt ruffe ich http://localhost/?cat=news oder http://localhost/index.php?cat=news auf und es funktioniert soweit einwand frei da wird dan halt die page für news angezeigt

so nun mit mod_rewrte:
solls so funktionieren das ich //localhost/news/ aurufe und durch den folgenden Befehl soll das umgewandelt werden
RewriteRule ([^/]+) /index.php?cat=$1 [L]

komischerweise giebt er mir http://localhost/index.php?cat=index.php aus ich hab schon alles mir mögliche versucht aber er will einfach nicht. wieso giebt er mir als gefundenen string index.php aus :confused: request uri war doch http://localhost/news/

ich habe noch ein screen angehängt. vieleicht weis jemand ne Lösung.

vielen Danke im vorraus.
 

Anhänge

  • request.jpg
    request.jpg
    45,6 KB · Aufrufe: 221
Das Problem bei deinem Pattern ist, dass die RewriteRule beim Aufruf von index.php mit QUERY_STRING erneut aufgerufen wird. Daher muss das Pattern index.php negieren, oder einfach nicht auf alles matchen, was nicht bei drei auf den Bäumen ist. Letzteres ist performanter.

RewriteRule ^\/([a-z]+)\/ /index.php?id=$1

Ungetestet, aber in der Art sollte es gehen.
 
Hi,

ich glaube, du brauchst eher sowas hier:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ([^/]+) /index.php?cat=$1 [L]

Damit wird die Rule nicht angewendet, wenn der Dateiname im Request als Datei oder Unterverzeichnis im entsprechenden Verzeichnis der Rewritebase existiert.

So long...

Der Indy
 
Zurück
Oben