[mod_rewrite] Weiterleitung auf PHP-Script [Problem gelöst]

atwo

notorisch abwesend
ID: 195558
L
20 April 2006
2.275
138
Moin,
ich arbeite gerade an einem Script, in dem folgende URL aufgerufen wird:

Code:
https://subdomain.domain.de/script/lang/de
Per mod_rewrite will ich diese URL auf folgende umleiten:

Code:
https://subdomain.domain.de/bla.php?lang=de
Ich hab mir dazu folgendes überlegt:

Code:
RewriteRule ^script/lang/(.*)$ bla.php?lang=$1
Läuft leider nicht. Am Script liegt es nicht, denn wenn ich meine Ziel-URL so eingebe, dann wird das Script korrekt ausgeführt. Also liegt es an meiner .htaccess ;)

Eventuell hat ja jmd. einen Tipp für mich.

Gruß, atwo
 
Zuletzt bearbeitet:
kann nicht gehen, weil er so wie es aussieht lang/bla.php aufruft, und nicht script/bla.php

nehme ich jetzt mal stark an! versuch mal ../bla.php anzugeben!
 
Sorry, hab mich oben verschrieben...:-? Soll eigentlich nur auf
Code:
subdomain.domain.de/bla.php?lang=de
weitergeleitet werden, ist also kein Ordner mehr dazwischen. Hab's schon editiert.
 
also ich denke mal, das er halt wirklich im falschen ordner landet, also das er im ordner script/lang/ landet und daher es nicht klappt, versuch es mal indem du die komplette aufzurufende url angibst, wenn es dann geht, dann liegt es wirklich daran.
 
Code:
RewriteEngine On
RewriteRule lang/(.*) index.php?do=change_lang&lang=$1
RewriteRule script/ bla.php
RewriteRule script bla.php       
RewriteRule ^script/lang/(.*)$ bla.php?lang=$1
Die drei anderen funktionieren ohne Probleme ;)
 
Wenn man mehrere Regeln hat setzt man eigentl. ein [L] hinter den Regeln, denn sonst durchläuft die eingegebene URL alle Regeln (und wird bei jeder Regel der Reihenfolge nach geändert)

https://www.modrewrite.de/mod_rewrite.syntax.phtml schrieb:
[L] Last | Bearbeitung abschliessen, keine weiteren Regeln anwenden.

Also versuch mal folgendes:

Code:
RewriteEngine On
RewriteRule lang/(.*) index.php?do=change_lang&lang=$1 [L]
RewriteRule script/ bla.php [L]
RewriteRule script bla.php [L]      
RewriteRule ^script/lang/(.*)$ bla.php?lang=$1

Kann sein, dass das schon reicht, wenn nicht versuch mal:

Code:
RewriteEngine On
RewriteRule lang/(.*) index.php?do=change_lang&lang=$1 [L]
RewriteRule script/ bla.php [L]
RewriteRule script bla.php [L]      
RewriteRule script/lang/(.*) bla.php?lang=$1

Wobei man eigentl. immer ^ u. $ benutzt ;) aber bei den anderen fehlt das ja und die funktionieren.


EDIT: Und mach mal überall ^u. $ rein ;) Denn die erste Regel wird vor der letzten bevorzugt und wird dann auch genommen ;)
denn https://www.domain.de/script/lang/blub trifft auch auf die erste Regel zu ;)
Was vor lang/(.*) steht ist egal wenn man ^ weglässt (klick)
 
Zuletzt bearbeitet:
Herzlichen Dank, dein Edit hat mir die Lösung offenbart ;) Jetzt läuft alles nach Plan! Danke für die Hilfe!