Ottima invenzione l'htaccess, peccato che sia anche una delle cause più frequenti di grattacapo e mal di testa.
Questa mattina ricevo un'email di Simone che mi avvisa di un problema sul sito. Accedento al blog dall'indirizzo http://simonecarletti.com/blog si viene reindirizzati alla pagina http://www.simonecarletti.com/blog//home/simonecarletti/simonecarletti.com/blog che genera (ovviamente) un errore 404.
In questi giorni sto lavorando allo sviluppo di questo sito (a presto ulteriori dettagli) che, basandosi su Rails e Movable Type, spreme a dovere l'uso del file .htaccess.
Indagando il problema ho notato che sembra verificarsi solo in questo caso specifico. Nei casi seguenti nessun problema:
http://simonecarletti.com/reindirizza ahttp://www.simonecarletti.com/http://simonecarletti.comreindirizza ahttp://www.simonecarletti.com/http://simonecarletti.com/blog/reindirizza ahttp://www.simonecarletti.com/blog/http://simonecarletti.com/paginareindirizza ahttp://www.simonecarletti.com/pagina
Purtoppo sembra che, nel caso in cui si acceda all'indirizzo corrispondente al blog senza lo /, la riscrittura automatica di Apache per normalizzare un percorso ad una cartella aggiungendo lo / vada in conflitto con le altre regole.
Potete provare voi stessi. Il contenuto dei due .htaccess presenti nelle cartelle /.htaccess e /blog/.htaccess è il seguente.
# Redirect www-less to www version of the website
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.simonecarletti.com$ [NC]
RewriteRule ^(.*)$ http://www.simonecarletti.com/$1 [L,R=301]
Sto ancora tentando di trovare una soluzione elegante al problema. Se qualcuno avesse proposte, ogni suggerimento è ben accetto.
Nota 1. Rimuovendo la direttiva sopra indicata dal file /blog/.htaccess il sistema funziona correttamente.
Nota 2. Non posso rimuovere quella direttiva per diversi motivi.

A giudicare dal numero di commenti, direi che non sono l'unico ad avere un rapporto conflittuale con l'.htaccess.
Per completezza, riporto la soluzione al problema.
# Redirect www-less to www version of the website RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^www.simonecarletti.com$ [NC] RewriteCond %{REQUEST_URI} ^/blog/(.*)$ RewriteRule ^(.*)$ http://www.simonecarletti.com/blog/$1 [L,R=301]Nello specifico, la riga aggiunta è
RewriteCond %{REQUEST_URI} ^/blog/(.*)$che forza la regola ad essere considerata solo per la cartella in uso. In caso contrario, l'htaccess parent avrà la precedenza.
Ciao Simone,
devo dire che il problema è strano. Premettendo che non conosco MovableType, l'unica cosa che potevo supporre come problema era la possibilità che, in Rails, avendo un modulo (o application) chiamato "blog", le regole di redirezione dello stesso framework (quindi indipendenti dall'.htaccess) sballasero l'URL.
Impossibile?
Ciao Simone,
in realtà il problema è indipendente sia da Rails sia da Movable Type.
Se tu crei due file .htaccess in due cartelle in un sito vuoto, scrivi dento le direttive indicate ad inizio post e li inserisci uno nella root e l'altro in una sottocartella, mostreranno esattamente il problema che mi hai segnalato. :\