Comment faire une redirection 301 en htaccess qui ne boucle pas sur elle même ?

Un problème de redirection en boucle se produit parfois lorsque l’on cherche à faire une redirection 301 d’une page non-rewritée vers une page rewritée.

Exemple :
J’ai une page dont l’url est www.monsite.ndd/ma_page.php
Je souhaite la rewritée en www.monsite.ndd/une-url-propre-pour-ma-page

J’écris donc dans mon fichier htaccess :

Cependant, un problème se pose : l’url /ma_page.php est toujours accessible.
Je souhaiterais que si l’utilisateur tape www.monsite.ndd/ma_page.php il soit automatiquement redirigé vers : www.monsite.ndd/une-url-propre-pour-ma-page.

Mais si on écrit une règle qui renvoie ma_page.php vers /une-url-propre-pour-ma-page et qu’on laisse la règle ci-dessus…
Nous voilà avec une belle boucle infinie :S

Voici donc une solution :

Ce code effectuera la redirection une seule fois, ce qui est bien pratique dans notre cas.