index.php no se carga por defecto

Respuestas:

153

Apache debe configurarse para reconocer index.php como un archivo de índice.

La forma más sencilla de lograrlo ...

  1. Cree un archivo .htaccess en su raíz web.

  2. Agrega la línea ...

DirectoryIndex index.php

Aquí hay un recurso sobre el asunto ...
http://www.twsc.biz/twsc_hosting_htaccess.php

Editar: supongo que Apache está configurado para permitir archivos .htaccess. Si no es así, tendrá que modificar la configuración en el archivo de configuración de apache (httpd.conf)

John Himmelman
fuente
4
Probablemente debería estar en el archivo php.conf que carga Apache.
staticsan
Creo que te refieres a php.ini. Independientemente, su apache no reconoce index.php como un archivo de índice de directorio. Si su manejo de archivos php es otro problema de configuración de Apache.
John Himmelman
1
no olvide reiniciar Apache !! ¡como yo hice! : /
Navid Einackchi
102

Si bien puede funcionar agregar 'DirectoryIndex index.php' a un archivo .htaccess,

NOTA:

En general, nunca debe usar archivos .htaccess

Esto se cita de http://httpd.apache.org/docs/1.3/howto/htaccess.html
Aunque esto se refiere a una versión anterior de apache, creo que el principio aún se aplica.

Agregar lo siguiente a su httpd.conf (si tiene acceso a él) se considera una mejor forma, causa menos sobrecarga del servidor y tiene exactamente el mismo efecto:

<Directory /myapp>
DirectoryIndex index.php
</Directory>
M_M
fuente
4
todo está bien si tiene acceso a ese archivo
Hayden Thring
1
+1 por eso. Es el método preferido a menos que no tenga acceso a httpd.conf.
Matthew Johnson
Creo que agregar esto al archivo de configuración default-ssl también está bien, si está usando HTTPS.
Alex W
44

Supongo que diría que el índice del directorio está configurado en index.html, o alguna variante, intente:

DirectoryIndex index.html index.php

Esto seguirá dando prioridad a index.html sobre index.php (útil si necesita lanzar una página de mantenimiento)

Ben Rowe
fuente
El mío se ve así, pero desafortunadamente está descargando index.php en lugar de ejecutarlo.
Webnet
@Webnet, entonces debería considerar cambiar Type y LoadModules a php para que lea php [ stackoverflow.com/questions/5121495/…
Merey Nurlan
15

Esto podría ser útil para alguien. aquí está el fragmento de httpd.conf (Apache versión 2.2 para Windows)

# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html
    DirectoryIndex index.php
</IfModule>

ahora esto buscará el archivo index.html si no lo encuentra, buscará index.php.

Maruf
fuente
3

Intente crear un archivo .htaccess con lo siguiente

DirectoryIndex index.php

Editar: En realidad, ¿no hay un paquete 'php-apache' o algo que se supone que debes instalar con ambos?

animuson
fuente
3

Tuve el mismo problema con un sitio en nuestro sitio alojado por administración directa. yo añadí

DirectoryIndex index.php

como una extensión de http personalizada (que agrega código a un httpdarchivo de sitios ) y el sitio luego ejecutó el index.php.

Phil Errington
fuente
2

El mismo problema para mí. Mi solución fue que mod_dir no estaba habilitado y apache2 no emitía un error al leer la directiva en mi archivo VirtualHost:

DirectoryIndex index.html

Usando los comandos:

sudo a2enmod dir
sudo sudo service apache2 restart

Se solucionó el problema.

Martlark
fuente
1
Creo que te refieres a2enmod?
TR_SLimey
1

Para obtener información: en alguna configuración de Apache2 debe agregar el comando DirectoryIndex en mods_enabled / dir.conf (no se encuentra en apache2.conf)

Zitun
fuente
1

Después de leer todo esto e intentar solucionarlo, obtuve una solución simple en el foro de ubuntu ( https://help.ubuntu.com/community/ApacheMySQLPHP ). El problema radica en el módulo libapache2-mod-php5. Es por eso que el navegador descarga el archivo index.php en lugar de mostrar la página web. Haz lo siguiente. Si el módulo de devoluciones de sudo a2enmod php5 no existe, entonces el problema está en libapache2-mod-php5. Purgar eliminar el módulo con el comando sudo apt-get --purge eliminar libapache2-mod-php5 Luego instalarlo nuevamente sudo apt-get install libapache2-mod-php5

Rupak Rokade
fuente
1

Tuve un síntoma similar. En mi caso, sin embargo, mi idiotez fue involuntariamente también tener un archivo index.html vacío en la carpeta raíz web. Apache estaba sirviendo esto en lugar de index.php cuando no solicité explícitamente index.php, ya que DirectoryIndexse configuró de la siguiente manera en mods-available/dir.conf:

DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

Es decir, 'index.html' aparece delante de 'index.php' en la lista de prioridades. La eliminación del archivo index.html de la raíz web resolvió naturalmente el problema. ¡Oh!

John Rix
fuente
1

Instrucciones paso a paso e instrucciones completas para Ubuntu 16.04.4 LTS y Apache / 2.4.18

" sudo -s"

" cd /etc/apache2/mods-enabled"

" vi dir.conf" y mueva index.php a la derecha después de DirectoryIndex como a continuación y guarde el archivo y luego reinicie el servidor Apache.

DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm

" service apache2 restart"

Si no ve dir.conf, deberá cargarlo (google para saber cómo)

Hecho.

Estiércol
fuente
1

Esta publicación puede ser antigua, pero solo la estoy publicando en caso de que ayude a otra persona, no recomendaría crear un archivo .htaccess en su raíz web y cambiar el índice. Siento que es mejor seguir los pasos

  1. Ve a la carpeta conf de tu carpeta apache, la mía es

    C:\Apache24\conf

  2. Abra el archivo llamado

    httpd.conf

  3. Ir a la sección

    <IfModule dir_module>
       DirectoryIndex index.html 
    
     </IfModule>
  4. Agregue index.php como se muestra a continuación

     <IfModule dir_module>
      DirectoryIndex index.html index.php
    
    </IfModule>

De esta manera, aún elige index.html e index.php como índice predeterminado, pero dando prioridad a index.html porque index.html vino antes que * index.php. Con esto quiero decir que si tiene index.html e index.php en el mismo directorio, index.html se usará como índice predeterminado, excepto que escriba ** index.php * antes de index.hml

Espero que ayude a alguien ... Happy Coding

Excelente Lawrence
fuente
1

¡Este funciona de maravilla!

primero

<IfModule dir_module>
    DirectoryIndex index.html
     DirectoryIndex index.php
</IfModule>

luego después de eso de

<Files ".ht*">
    Require all denied
</Files>

a

 <Files ".ht*">
    Require all granted
</Files>
MelPogz
fuente