2012-05-26 10 views
28

creé un archivo .htaccess con sólo la línea siguiente:archivo .htaccess objeto de una lectura ("Opciones" en -Indexes archivo .htaccess no funciona)

Opciones -Indexes

Sin embargo , el índice aún se muestra para el directorio.

Acabo de instalar Apache2 y estoy usando todos los valores predeterminados (no modifiqué apache2.conf o httpd.conf).

OS: Ubuntu 12.04 (Precise Pangolin)
Apache 2 Versión: Server version: Apache/2.2.22 (Ubuntu) Server built: Feb 13 2012 01:51:56

$ ls -l .htaccess
-rwxr-xr-x .htaccess

EDIT:

que tomé de lanzz consejo y galimatías añadido al archivo .htaccess, y descubrió que el .htaccess el archivo no se está leyendo.

+4

Trata de colocar una línea de galimatías en el .htaccess y mira si estás obtener errores internos del servidor al acceder a su sitio. Si no obtiene errores, su .htaccess no se está leyendo en absoluto. – lanzz

+1

¿Qué tal solo 'Opciones -índices'? –

+2

¿Tiene 'AllowOverride All' establecido en su httpd.conf? – Ansari

Respuesta

26

Para que esto funcione, agregué lo siguiente a /etc/apache2/httpd.conf (que es un archivo de longitud cero por defecto cuando Apache está instalado) y luego reinicié Apache. Ahora Options -Indexes en el archivo .htaccess funciona como desee. Aquí está el mínimo necesario para conseguir que funcione:

/etc/apache2/httpd.conf :

<VirtualHost *:80> 
     DocumentRoot /var/www 
     <Directory/> 
     </Directory> 
</VirtualHost> 

lanzz 's sugerencia de añadir una línea de galimatías para el archivo .htaccess para ver si se está leyendo fue útil en el diagnóstico de la problema.

Tenga en cuenta que por defecto es AllowOverideAll, por comentario Evan Mulawski 's, por lo que no se requieren en el conjunto mínimo de líneas httpd.conf anteriores.

+0

Esto me ayudó mucho, debería marcar su respuesta como aceptada. –

+2

No se recomienda editar el 'httpd.conf' en Ubuntu; de hecho, ese archivo se ha ido a partir de 13.10. En cambio, la forma preferida de hacer las cosas es poner su configuración de VirtualHost en un archivo .conf en '/ etc/apace2/sites-available' y habilitarla con' a2ensite mysite.conf'. Los sitios también se pueden deshabilitar fácilmente: 'a2dissite mysite.conf'. (Tenga en cuenta que ahora se requiere ".conf" a partir de 13.10 en los archivos de configuración de VirtualHost). – JoBu1324

+0

De hecho, Ubuntu tiene todo tipo de apache [ajustes de administración] fáciles de usar (https://help.ubuntu.com/13.04/serverguide /httpd.html) para hacer la vida más fácil. – JoBu1324

32

Debe verificar que la configuración de Apache permita que se ejecute el .htaccess. En su configuración host virtual, debe haber una línea:

AllowOverride All

Si no lo hay, por eso el .htaccess no está teniendo efecto.

+2

El OP está usando los valores predeterminados, que de acuerdo con http: //httpd.apache .org/docs/2.0/mod/core.html, está en 'Todo' de forma predeterminada. –

+2

¿'httpd.conf' es la configuración del host virtual de forma predeterminada? Esta vacio. Agregué 'AllowOverride All' y reinicié Apache, pero me dio el error' AllowOverride no permitido aquí'. –

+0

Evan, acabo de encontrar una situación en la que no era todo por defecto, por lo que este comentario fue realmente útil. – deweydb

4

en caso de tener

AllowOverride None 

cambiar eso a:

AllowOverride All 

en su httpd.conf o en su defecto VirtualHost archivo en en/etc/apache2/sites-available /. ..conf

14

Tuve el mismo problema. Estaba usando un host virtual, así que modifiqué httpd-vhosts.conf por lo que si usted está utilizando uno esto podría ayudar a

Cuando configura su referencia anfitrión la etiqueta de directorio para ser la misma que la raíz del documento

<VirtualHost *:8080> 
ServerName somelocalserver 
DocumentRoot "C:/Websites/htdocs/yoursite" 
<Directory "C:/Websites/htdocs/yoursite"> 
    Options FollowSymLinks 
    AllowOverride All 
</Directory> 

que necesitaba AllowOverride All reconocer el .htaccess archivo.

Editar

También necesitaba para agregar la ruta a la raíz del sitio en la propia etiqueta de directorio. es decir, <Directory "C:/Websites/htdocs/yoursite">. Este fue el valor predeterminado en las muestras que utilicé.

+0

Esto funcionó para mí también. Esto comenzó a suceder en un vhost que ha estado funcionando bien durante años después de que agregué algunos nuevos fantasmas, aunque no tengo idea de por qué ... – BadCash

7

Como no hay ningún archivo de httpd.conf más, lo que tiene que hacer en un VPS es:

  1. Ir a /etc/apache2/sites-enabled/
  2. hacer ls para encontrar el archivo del sitio web que está buscando
  3. Edite el archivo correspondiente con nano THE_CONF_FILE o con el editor que desee
  4. Cambie todos los valores AllowOverride None que ve en <Directory> ... </Directory> s diferentes a AllowOverride All
  5. Guarde el archivo y cerrarlo

  6. Ahora necesita habilitar reescritura módulo ejecutando el comando: sudo a2enmod rewrite

  7. Y finalmente para activar la nueva configuración, es necesario ejecutar: service apache2 restart

¡Funcionará como un amuleto ahora!

+5

+1 para 'sudo a2enmod rewrite'. Pasé unos 10 minutos ensuciando mi 'apache2.conf',' sites-enabled/default.conf', y 'conf-enabled/*. Conf' con' AllowOverride All 'y no pude por la vida de mi figura fuera de que mod_rewrite no estaba habilitado. – stevendesu

+1

la punta con el comando sudo a2enmod reescribir lo hizo por mí. – Teifun2

1

Además, junto cambiar AllowOverride Todo el fichero de configuración de host virtual, también puede ser necesario añadir lo siguiente al principio del archivo .htaccess:

RewriteEngine On 
RewriteBase/

De lo contrario todavía no pueden detectar las reescrituras o redirecciones.

2

He resuelto este problema en RHEL editando el archivo /etc/http/conf/httpd.conf he cambiado todo

AllowOverride None 

Para

AllowOverride All 

También puede comprobar httpd.conf AllowOverride por mandato siguiente en RHEL

grep -i AllowOverride /etc/conf/conf/httpd.conf 
Cuestiones relacionadas