2009-03-03 15 views
5

Este es el problema opuesto al de la mayoría sobre el que he leído. Estoy ejecutando Ubuntu 8.04 en una instancia de Amazon con Apache 2.2.8 y no puedo entender por qué configurar AllowOverride en None para root no impide que se incluya mi archivo .htaccess.¿Por qué no puedo deshabilitar .htaccess en Apache?

Tengo un subdirectorio con hello.py y un archivo .htaccess. Cuando busco el archivo, funciona bien con modpython sirviendo el archivo. Si pongo algo de basura en .htaccess, aparece un error del servidor, por lo que sé que se está utilizando el archivo .htaccess. Además, si elimino el archivo .htaccess, hello.py ya no es servidor por modpython, sino que el navegador intenta abrirlo.

En uno de mis sitios disponibles (enlazados en sitios habilitados), tengo "AllowOverride None" para el directorio raíz. Pensé que esto evitaría que se incluyera .htaccess desde la raíz y todos sus subdirectorios, lo que debería hacer que hello.py no sea atendido por mod_python. Sin embargo, sigue funcionando correctamente y puedo probar que .htaccess todavía se incluye porque cuando lo modifico, veo los resultados en mi navegador.

Quizás haya algo que no entiendo sobre mi archivo en sitios habilitados. Este es el archivo que estoy usando:

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

Gracias por cualquier ayuda.

+0

Si bien AllowOverride None debe evitar que lea archivos .htaccess, observo que su configuración no contiene nada con respecto a mod_python (es decir, AddHandler mod_python .py). ¿Qué hay en el archivo .htaccess? – Pesto

+0

.htaccess: AddHandler mod_python .py PythonHandler mptest PythonDebug En y en mptest.py: de Apache importación mod_python manejador def (req): req.log_error ('manejador') req.content_type = 'text/plain ' req.send_http_header() req.write ("¡Hola mundo!") return apache.OK – Mitch

Respuesta

3

El motivo por el que el archivo no se sirve a través de mod_python cuando elimina .htaccess es porque la configuración para mod_python está ubicada en él. Si mueve esas cosas a su archivo de sitios disponibles, puede eliminar .htaccess, hacer la vista gorda ante el problema y llamarlo por día.

Si eso no te satisface, entonces por qué se está leyendo .hácess, no puedo decirlo. Tiene razón en que AllowOverride None debería evitar que el archivo se lea alguna vez. ¿Has considerado la posibilidad de arruinar algo al agregar el sitio virtual? Intente arrojar algo de basura a la configuración y vea si se queja, solo para asegurarse de que se está leyendo.

+0

Creo que tiene razón en que el problema es con mi host virtual. Si muevo las etiquetas de Directorio que contienen AllowOverride fuera de mis etiquetas de VirtualHost, funciona como se esperaba: .htaccess no está incluido. Gracias por sugerir esto – Mitch

2

AllowOverride solo está permitido en <Directory> -secciones, por lo que ha hecho todo bien.

Un problema que podría tener es que otras (sub-) <Directory> -secciones establecidas AllowOverride a algo diferente de None. Eso anulará la configuración de estos subdirectorios. utilizo

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

y en /var/www (mi docroot) Puedo usar .htaccess es.

La razón por la mod_python ya no funciona si elimina su .htaccess es que mod_python configuración es por lo general en .htaccess archivos.

Si necesita más información, envíenos su configuración.

PS: De hecho, el docuementation vinculado anteriormente dice que usted debe Nunca establecer AllowOverride a algo no None en <Directory />.

Cuestiones relacionadas