La paranoia di un programmatore

Confessioni di un hacker

La paranoia di un programmatore header image 2

URL rewrite nelle sottocartelle

Dic 17, 2008 - 19:02 · 3 commenti

Se siete su un server Apache, come me, probabilmente sapete cos’è mod_rewrite. Questo modulo Apache è capace di produrre degli URL molto belli da vedere e molto SEO-friendly. Per esempio ora state leggendo il mio blog e il mio blog gira sotto il motore di wordpress. Wordpress fa un uso intensivo di mod_rewrite. Il file .htaccess principale è:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

Significa:

  1. voglio intercettare tutte le richieste alla cartella principale
  2. se la richiesta non è un vero file
  3. o una vera cartella
  4. allora passa l’intero URI a index.php

queste poche righe di codice producono pagine come http://www.zaerl.com/lang/en/live/ e non complicate richieste GET. Ora è saltato fuori un problema un paio di giorni fa. Devo installare in una sottocartella uno strumento che riscrive gli URL esattamente alla maniera di Wordpress. Immaginiamo che questo strumento vada nella cartella foo/. Ha un file .htaccess file che è la perfetta copia di quello di Wordpress. Ma non funziona. http://www.zaerl.com/foo/questo/e/quello/ produce un errore “404 page not found” dato che il file .htaccess riscrive l’URL fregandosene di cosa c’è su foo/.htaccess.

Ebbene ho cercato la soluzione al mio problema in un sacco di forum differenti ma, incredibilemente, non ho trovato informazioni utili. Ho provato complicate espressioni regolari nel file .htaccess principale, provato differenti RewriteCond ma niente. La soluzione è semplice. Molto, molto semplice. Nel file .htaccess della sottocartella foo/ ho scritto:

RewriteBase /foo

invece di:

RewriteBase /

e tutto qui. Sì lo so. KISS. Questo è uno di quei problemi. Dannato me. Adesso posso permettere a phpBB di riscrivere quello che vuole.

Tag: hacking

3 risposte ↓

  • 1 Posts about SEO as of December 17, 2008 | The Lessnau Lounge il giorno Dic 17, 2008 alle 20:42 ha scritto

    [...] [...]

  • 2 Nicola il giorno Mag 7, 2010 alle 13:18 ha scritto

    Sei un grande! Ho bestemmiato un ora per quel problema. Stavo creando uno script per il tracciamento dei links e non capivo perchè in directory principale fungeva e in sottodirectory no. Poi ho trovato e provato questa soluzione….e mo funziona alla grande! GRAZIE MILLE!

  • 3 programmer il giorno Mag 7, 2010 alle 13:35 ha scritto

    Grazie. È una di quelle classiche cose stupide che ti passano sotto gli occhi ma che non ci fai caso. Il manuale di Apache non è un granché.

Lascia un commento