RewriteRule ^([^/]*)$ /index.php?site=$1
RewriteRule ^([^/]*)/$ /index.php?site=$1
RewriteRule ^([^/]*)/([^/]*)$ /index.php?site=$1&lang=$2
RewriteRule ^([^/]*)/([^/]*)/$ /index.php?site=$1&lang=$2 [L]Das Problem ist jetzt, dass nur die letzte der Regeln greift, bei allen anderen gibts nen 404-Error…
Ich muss dazusagen, dass ich bis jetzt noch nie mit Mod Rewrite gearbeitet habe…
[EDIT]
Jetzt gehts, woran es lag, weiß ich nicht, habe nichts verändert…
[EDIT]
Ich wollte die Regeln vereinfachen, jetzt gehts wieder nich…
RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?site=$1&lang=$2 [C]
RewriteRule ^([^/]+)/?$ /index.php?site=$1 [L]
OK, danke, probier ich gleich aus, wenn ich zu Hause bin. Allerdings ist mir aufgefallen, dass das optimale Slash am Ende fehlt.
Also so:
RewriteEngine On
RewriteRule ^(.*)/(.*)/? /index.php?site=$1&lang=$2 [L]
RewriteRule ^(.*)/? /index.php?site=$1 [L][EDIT]
Also ich konnte es jetzt doch schnell testen, bei allen 4 Varianten, die URL aufzurufen, kommt ein 500 - Internal Server Error…
[EDIT 2]
Der Fehler konnt auch, wenn ich deinen Code unverändert in die .htaccess speichere…
[EDIT 3]
Also ich habe deinen Code nochmal genau angeschaut, statt dem [L] muss da ein [C] sein bei der ersten RewriteRule:
RewriteEngine On
RewriteRule ^(.*)/(.*) /index.php?site=$1&lang=$2 [C]
RewriteRule ^(.*) /index.php?site=$1 [L]Jetzt habe ich mir $_GET[‚site‘] und $_GET[‚lang‘] ausgeben lassen, wenn ich domain.de/site/lang/ aufrufe, kommt bei site ‚/index.php/de/‘ und bei lang nichts raus…
So, ich hab mich jetzt nochmal ein bisschen mit den Rewrite Conditions auseinandergesetzt und habe schließlich die Lösung gefunden. Für alle, die eine ähnliche Lösung suchen, hier der Code für die .htaccess: