RewriteRule greift nicht - Falsche Reihenfolge?

Hi,
ich sitze hier schon seit einiger Zeit an 2 RewriteRules:

[code]RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d

Sicherstellen, das nicht existierende Ordner “virtuell” werden

RewriteRule ^([0-9]+)-(.[^/])/([0-9]+)-(.).html$ index.php?mode=page&id=$4&cat=$2 [QSA,L]
RewriteRule ^([0-9]+)-(.[^/])/$ index.php?mode=cat&id=$1&cat_title=$2 [QSA,L]
RewriteRule (.
).html$ $1.php[/code]
Das Problem:
Nun ja, die URL example.org/ordner/1-kategorie/1 … titel.html funktioniert nicht… hingegen die Kategorie selber aber ohne Probleme:
example.org/ordner/1-kategorie/

Was ist an der RewriteRule falsch?
Ich hatte mal so ein ähnliches Problem, ich kann mich aber nicht erinnern, wie ich es damals gelöst habe.
Es muss an der Reihenfolge liegen, aber egal ob ich die beiden vertausche, dann funktioniert entweder nur die eine, oder die andere :frowning:
lg DHMH

Hast Du es schonmal mit einem “ornext”-Flag versucht, also einem [OR] zur ersten Condition?
Und dafür das “last”-Flag [L] weggelassen?

So sieht die Datei jetzt aus:

RewriteRule ^([0-9]+)-(.*[^/])/([0-9]+)-(.*).html$ index.php?mode=page&id=$4&cat=$2 [QSA] [OR] RewriteRule ^([0-9]+)-(.*[^/])/$ index.php?mode=cat&id=$1&cat_title=$2 [QSA,L] RewriteRule (.*).html$ $1.php
Geht aber leider nicht :susp:
lg DHMH

Du hast ein kleines Syntax-Problem bei deinem ursprünglichen Code:

[code]RewriteCond %{REQUEST_FILENAME} -d

Sicherstellen, das nicht existierende Ordner “virtuell” werden[/code]

Das bedeutet, dass das Verzeichnis existieren muss. Wenn die Regel nur für nicht existierende Verzeichnisse gelten soll, muss du !-d verwenden. Außerdem solltest du außerdem auf nicht existierende Datei testen:

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([0-9]+)-(.*[^/])/([0-9]+)-(.*).html$ index.php?mode=page&id=$4&cat=$2 [QSA,L] RewriteRule ^([0-9]+)-(.*?[^/])/?$ index.php?mode=cat&id=$1&cat_title=$2 [QSA,L] RewriteRule (.*).html$ $1.php

danke, aber da habe ich mich beim Kommentar verschrieben :stuck_out_tongue:

ich habe herausgefunden, das OR nur bei RewriteCond benutzt werden darf… meine .htaccess sieht daher wie folgt aus:

RewriteEngine, On RewriteRule ^([0-9]+)-(.*[^/])/([0-9]+)-(.*[^/]).html$ index.php?mode=page&id=$4&cat=$2 [QSA] RewriteRule ^([0-9]+)-(.*[^/])/$ index.php?mode=cat&id=$1&cat_title=$2 [L,QSA] RewriteRule (.*).html$ $1.php
lg DHMH