Compare les règles 1 et 3 que tu donnes :
RewriteRule ^new(.*) /test$1
vs.
RewriteRule ^blog(.*) http://www.milchior.fr/arthurrainbow/$1
Quelle différence majeure fais-tu ? Dans le second cas, il y a http://... dans le second membre de RewriteRule. C'est ce qui explique la différence de comportement : sans http://... la réécriture reste interne au serveur alors qu'avec http://... la réécriture est "externe" et il y a redirection du navigateur.
Ensuite, pour la seconde règle, elle est un peu trop "large" car le (.*) du premier membre correspond à tout. Et il faut savoir une chose primordiale concernant la réécriture d'URL : Apache n'arrête de réécrire les URL que lorsqu'il a "convergé", i.e. qu'il ne peut plus réécrire. En mettant (.*), tu crées en fait une boucle de réécriture : /nimportequoi est réécrit en /testnimportequoi qui repart dans un cycle de réécriture, ce qui donne /testtestnimportequoi qui repart, etc.. Cf. mes explications.
Pour répondre à ta question initiale, soit tu fais des réécritures internes (sans http://... dans le second membre de RewriteRule), ce qui suppose que les 2 noms de domaine pointent vers le même document root ou à peu près ; soit tu passes par le module proxy d'Apache.
Dans tous les cas, cf. la doc Apache.
Partager