allora....il 301 indica al motore che la pagina è stata definitivamente sostituita da una nuova e quindi da lì in poi dovrà usare quella nuova....il 302 invece dice che la pagina è stata momentaneamente reindirizzata.....

mod_rewrite invece alla richiesta GET produce un codice 200 che è lo stesso codice che viene prodotto dai web server....

la differenza tra 301 e 302 e mod_rewrite è che i primi due indicano uno spostamento della pagina il secondo invece attua un redirect trasparente....

cioè se io faccio mod_rewrite da xxx.html a yyy.html per il motore di ricerca yyy.html è come se non esistesse lui vedrà solo xxx.html e per lui il codice html fornitogli proverrà da xxx.html

mentre per il 301 e 302 il motore penserà che xxx.html è stata abbandonata in fare di yyy.html e che quindi non dovrà mai più prendere in considerazione xxx.html

adesso quale metodo usare dipende da te....in genere se vuoi trasformare url dinamici in statici ti conviene usare mod_rewrite