Hi!
Also, die Dateien liegen in folgender Form vor:
<root>/foo.php
<root>/bar.php
Es geht nicht (nur) um diese Dateien sondern um Verweise, die in deren Ausgabe stehen, also Bilder, CSS, Javascript und ähnliches.
<root>/foo.php soll über example.org/foo(/) und <root>/bar.php über example.org/bar(/) aufrufbar sein.
Und die darin eingebundenen Ressourcen sind stets mit Verweisen relativ zum DocumentRoot eingebunden? Wenn sie relativ zur aufgerufenne Ressource verlinkt sind, kommt es auf den / an.
Ansonsten willst du hier ein normales internes Rewriting, wie es schon oft dokumentiert ist.
Von example..org/foo.php soll eine 301-Weiterletung auf example.org/foo(/) und von example..org/bar.php eine 301-Weiterletung auf example.org/bar(/) erfolgen.
Und das noch oben drauf geht so nicht, weil das eine zum anderen weiterleitet und wieder zurück. /foo wird umgeschrieben zu foo.php, danach folgt immer ein interner Redirect mit foo.php als neuem Request. Aber das willst du ja als als /foo umgeschrieben sehen. Die Reihenfolge der Regel spielt auch keine Rolle, weil jeweils nur die eine oder die andere passt und das L-Flag nichts nützt. Allerdings könntest du die Umschreibung des internen Redirekts zu verhindern versuchen, indem du mit einer RewriteCond(ition) IS_SUBREQ auswertest. Da kann ich aber nicht mit Erfahrung dienen, jedoch sollte das laut der im Netz zu findenden Literatur zur Identifikation des internen Redirects passen.
Lo!