Una regola è troppo poca, due sono troppe

| 3 Commenti | 1 TrackBack

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 a http://www.simonecarletti.com/
  • http://simonecarletti.com reindirizza a http://www.simonecarletti.com/
  • http://simonecarletti.com/blog/ reindirizza a http://www.simonecarletti.com/blog/
  • http://simonecarletti.com/pagina reindirizza a http://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.

1 TrackBack

TrackBack URL: http://www.simonecarletti.com/mt4/mt-script-tb.cgi/786

Analizzando i log è possibile individuare tempestivamente errori nella configurazione server del proprio sito. Read More

3 Commenti

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. :\

Scrivi un commento

Iscriviti al feed

Feed Non conosci i feed RSS? Hai paura che sia una fregatura? Questa breve presentazione fa al caso tuo... prenditi 5 minuti, è divertente! :)

Ultimi commenti

  • Simone Carletti: Ciao Simone, in realtà il problema è indipendente sia da continua...
  • Simone: Ciao Simone, devo dire che il problema è strano. Premettendo continua...
  • Simone Carletti: A giudicare dal numero di commenti, direi che non sono continua...
Powered by Movable Type 4.2-en