Mode Rewrite mal ein bischen anders aufgeschrieben:
RewriteRule 'angeforderter URI' 'anderer URI'
RewriteRule 'angeforderter URI' 'anderer URI' [R]
Der 'angeforderte URI' ist der sog. REQUEST_URI unter diesem Namen ist er in der Serverumgebung zu finden. Der 'andere URI' kann ein serverinterner Prozess sein oder ein anderer URI auf dem gleichen Server. Wurde [R] geflaggt, erfolgt eine Redirection, d.h. der Client wird vermittels eines Location-Header zum 'anderer URI' geschickt, hierbei ändert sich die Adresszeile im Browser, der Browser requestet nacheinander zunächst den Ersten und dann den zweiten URI 'anderer URI'.
Ohne [R] bleibt der Client auf dem REQUEST_URI, die Adresszeile ändert sich nicht.
In beiden Fällen erwartet der Client eine Response von 'anderer URI'. Um die Verwirrung komplett zu machen, kann 'anderer URI' auch selbst einen Location-Header erzeugen (unabhängig von [R]) und den Client zu einem 'wiederum anderen URI' schicken.
Zu Deiner Frage zu Relativen Pfadangaben in action, href, scr...
Diese sind immer relativ zum REQUEST_URI, also zu dem URI, der letztendlich in der Adresszeile des Browsers steht.
Nehmen wir [R] aus, der Request_Uri sei /foo/bar.html (konstant) hierdrin soll ein Link in href="baz.txt" notiert sein. Der Browser wird den relativen Link ergänzen, zu sehen, wenn Du mit dem Mauszeiger drüberfährst ist: /foo/baz.txt
Mit {R] gilt die gleiche Beziehung, nur mit dem Unterschied, dass vom Request_Uri ausgehend auf eine andere Seite umgeleitet wird und sich damit ein neuer Request_Uri ergibt.
Hotti