2009-03-03 8 views
5

Questo è il problema opposto della maggior parte su cui ho letto. Sto usando Ubuntu 8.04 su un'istanza Amazon con Apache 2.2.8 e non riesco a capire perché impostare AllowOverride su None per root non impedisca l'inclusione del mio file .htaccess.Perché non riesco a disabilitare .htaccess in Apache?

Ho una sottodirectory con hello.py in esso e un file .htaccess. Quando sfoglio il file, funziona bene con modpython che serve il file. Se metto dei rifiuti in .htaccess, ricevo un errore del server, quindi so che il file .htaccess è in uso. Anche se cancello il file .htaccess, ciao.py non è più server da modpython - invece il browser prova ad aprirlo.

In uno dei miei siti disponibili (collegato in siti abilitati), ho "AllowOverride None" per la directory root. Ho pensato che questo avrebbe impedito .htaccess di essere incluso da root e tutte le sue sottodirectory che dovrebbero far sì che hello.py non sia servito da mod_python. Tuttavia, continua a essere servito bene e posso verificare che .htaccess è ancora incluso perché quando lo modifico, vedo i risultati nel mio browser.

Forse c'è qualcosa che non capisco sul mio file in siti abilitati. Questo è il file che sto usando:

NameVirtualHost *:8080 
<VirtualHost *:8080> 
<Directory /> 
AllowOverride None 
</Directory> 
</VirtualHost> 

Grazie per qualsiasi aiuto.

+0

Mentre AllowOverride Nessuno deve impedirgli di leggere i file .htaccess, noto che la configurazione non contiene nulla per quanto riguarda mod_python (ad esempio, AddHandler mod_python .py). Cosa c'è nel file .htaccess? – Pesto

+0

..htaccess: AddHandler mod_python .py PythonHandler mptest PythonDebug Su e in mptest.py: da mod_python importazione apache def handler (req): req.log_error ('handler') req.content_type = 'text/plain ' req.send_http_header() req.write ("Hello World!") return apache.OK – Mitch

risposta

3

Il motivo per cui il file non viene servito tramite mod_python quando si elimina .htaccess è perché in esso si trova l'installazione per mod_python. Se trasferisci quella roba nel tuo file disponibile sui siti, puoi eliminare .htaccess, chiudere un occhio sul problema e chiamarlo un giorno.

Se questo non ti soddisfa, allora sul perché .htacess viene letto affatto, non posso dire. È corretto che AllowOverride Nessuno dovrebbe impedire che il file venga mai letto. Hai preso in considerazione la possibilità di aver rovinato qualcosa quando hai aggiunto il sito virtuale? Prova a gettare della spazzatura nella config e vedere se si lamenta, solo per essere sicuro che sia letto.

+0

Penso che tu abbia ragione che il problema sia con il mio host virtuale. Se sposto i tag Directory contenenti AllowOverride al di fuori dei miei tag VirtualHost, funziona come previsto - .htaccess non è incluso. Grazie per averlo suggerito. – Mitch

2

AllowOverride è consentito solo nelle sezioni <Directory>, quindi hai fatto tutto bene.

Un problema che si potrebbe avere è che l'altro (sotto) <Directory> -sieme di sezioni AllowOverride è diverso da None. Ciò sostituirà l'impostazione per queste sottodirectory. Io uso

<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
</Directory> 
<Directory /var/www/> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride AuthConfig 
    Order allow,deny 
    allow from all 
</Directory> 

e /var/www (il mio docroot) posso usare .htaccess es.

Il motivo per cui mod_python non funziona più se si elimina il vostro .htaccess è che mod_python setup è di solito in .htaccess file.

Se avete bisogno di ulteriori informazioni, vi preghiamo di inviarci la vostra configurazione.

PS: In realtà il docuementation linkato sopra dice che si dovrebbe mai impostare AllowOverride a qualcosa non None in <Directory />.