uhm un RewriteEngine On all'inizio ? (adesso faccio due prove anch'io)
edit: ok, credo di aver capito distinguiamo due casi:
Senza specificare RewriteBase viene usato il valore di default, che è il nome completo della directory in cui si trova l'htaccess. Questo però vale solo per gli URL in entrata, cioè il primo operando delle regole. Per gli URL in uscita, trasformati (il secondo operando) bisogna specificare il path completo!
Mettiamo questo file in /test/:
Codice PHP:
RewriteEngine On
# niente RewriteBase
RewriteRule ^ciao.html$ /test/cippa.html
RewriteRule ^casa.html$ /index.php
e miosito.altervista.org/test/ciao.html mostra /test/cippa.html, mentre miosito.altervista.org/test/casa.html mi porta alla home del mio sito.
Indicando una RewriteBase, ad esempio il path completo della directory, questa viene usata sia per il primo che per il secondo operando. Quindi l'url arriva dal browser, viene tolta la parte base, viene modificato e poi questa parte viene riattaccata davanti. Il nostro file /test/.htaccess diventa
Codice PHP:
RewriteEngine On
RewriteBase /test
RewriteRule ^ciao.html$ cippa.html
RewriteRule ^casa.html$ /index.php
(notare come /index.php non cambi! - se comincia con uno slash la RewriteBase non viene usata!)
Le due redirezioni alla fine si comportano allo stesso modo, ma sono scritte in modo diverso.
bom, spero di aver fatto un po' di luce sul problema, o di avervi ancora confuso di più.
@swedenfox:
occhio che gli .htaccess vengon caricati in sequenza tutti, quindi se in una sottodir non vuoi che vengano applicate anche le ergole della root del sito, devi far terminare l'elaborazione