index.php non si carica di default


Risposte:


153

Apache deve essere configurato per riconoscere index.php come file di indice.

Il modo più semplice per ottenere questo risultato ..

  1. Crea un file .htaccess nella tua web root.

  2. Aggiungi la linea ...

DirectoryIndex index.php

Ecco una risorsa sull'argomento ...
http://www.twsc.biz/twsc_hosting_htaccess.php

Modifica: presumo che apache sia configurato per consentire i file .htaccess. In caso contrario, dovrai modificare l'impostazione nel file di configurazione di apache (httpd.conf)


4
Probabilmente dovrebbe essere nel file php.conf caricato da apache.
staticsan

Penso che tu intenda php.ini. Indipendentemente da ciò, il suo apache non riconosce index.php come file di indice di directory. Se la gestione dei file php è un altro problema di configurazione di Apache.
John Himmelman

1
non dimenticare di riavviare apache !! come ho fatto io! : /
Navid Einackchi

102

Mentre l'aggiunta di "DirectoryIndex index.php" a un file .htaccess potrebbe funzionare,

NOTA:

In generale, non dovresti mai usare file .htaccess

Questo è citato da http://httpd.apache.org/docs/1.3/howto/htaccess.html
Sebbene si riferisca a una versione precedente di apache, credo che il principio si applichi ancora.

Aggiungere quanto segue al tuo httpd.conf (se hai accesso ad esso) è considerato una forma migliore, causa meno overhead del server e ha lo stesso identico effetto:

<Directory /myapp>
DirectoryIndex index.php
</Directory>

4
va tutto bene se hai accesso a quel file
Hayden Thring

1
+1 per quello. È il metodo preferito a meno che non si abbia accesso a httpd.conf.
Matthew Johnson

Credo che anche l'aggiunta di questo al file di configurazione default-ssl vada bene, se stai usando HTTPS.
Alex W

44

A prima vista direi che l'indice della directory è impostato su index.html, o qualche variante, prova:

DirectoryIndex index.html index.php

Questo darà comunque priorità a index.html su index.php (utile se devi aprire una pagina di manutenzione)


Il mio assomiglia a questo ma sfortunatamente sta scaricando index.php invece di eseguirlo.
Webnet

@Webnet quindi dovresti considerare di cambiare Type e LoadModules in php in modo che legga php [ stackoverflow.com/questions/5121495/…
Merey Nurlan

15

Questo potrebbe essere utile a qualcuno. ecco lo snippet da httpd.conf (Windows versione 2.2 di Apache)

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

ora questo cercherà il file index.html se non trovato cercherà index.php.


3

Prova a creare un file .htaccess con quanto segue

DirectoryIndex index.php

Modifica: in realtà, non esiste un pacchetto "php-apache" o qualcosa che dovresti installare con entrambi?


3

Ho avuto lo stesso problema con un sito sul nostro sito ospitato dall'amministratore diretto. Ho aggiunto

DirectoryIndex index.php

come estensione httd personalizzata (che aggiunge codice a un httpdfile di siti ) e il sito ha quindi eseguito index.phpper impostazione predefinita.


2

Lo stesso problema per me. La mia soluzione era che mod_dir non era abilitato e apache2 non emetteva un errore durante la lettura della direttiva nel mio file VirtualHost:

DirectoryIndex index.html

Utilizzando i comandi:

sudo a2enmod dir
sudo sudo service apache2 restart

Risolto il problema.


1
Penso che intendi a2enmod?
TR_SLimey

1

Per info: in alcune configurazioni di Apache2 è necessario aggiungere il comando DirectoryIndex in mods_enabled / dir.conf (non si trova in apache2.conf)


1

Dopo aver letto tutto questo e aver provato a risolverlo, ho ottenuto una semplice soluzione sul forum di Ubuntu ( https://help.ubuntu.com/community/ApacheMySQLPHP ). Il problema sta con il modulo libapache2-mod-php5. Ecco perché il browser scarica il file index.php invece di mostrare la pagina web. Eseguire le seguenti operazioni. Se sudo a2enmod php5 restituisce il modulo non esiste, il problema è con libapache2-mod-php5. Elimina rimuovi il modulo con il comando sudo apt-get --purge remove libapache2-mod-php5 Quindi installalo di nuovo sudo apt-get install libapache2-mod-php5


1

Ho avuto un sintomo simile. Nel mio caso, però, la mia idiozia consisteva nell'avere involontariamente anche un file index.html vuoto nella cartella principale del web. Apache stava servendo questo piuttosto che index.php quando non ho richiesto esplicitamente index.php, poiché DirectoryIndexera configurato come segue in mods-available/dir.conf:

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

Cioè, "index.html" appare prima di "index.php" nell'elenco delle priorità. La rimozione del file index.html dalla radice web ha naturalmente risolto il problema. D'oh!


1

Istruzioni dettagliate e complete per Ubuntu 16.04.4 LTS e Apache / 2.4.18

" sudo -s"

" cd /etc/apache2/mods-enabled"

" vi dir.conf" e sposta index.php a destra dopo DirectoryIndex come sotto e salva il file, quindi riavvia il server Apache.

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

" service apache2 restart"

Se non vedi dir.conf, dovrai caricarlo (google per come)

Fatto.


1

Questo post potrebbe essere vecchio ma lo sto pubblicando solo nel caso in cui aiuti qualcun altro, non consiglierei di creare un file .htaccess nella tua radice web e di cambiare l'indice. Sento che è meglio seguire i passaggi

  1. Vai alla cartella conf della tua cartella apache la mia è

    C:\Apache24\conf

  2. Apri il file denominato

    httpd.conf

  3. Vai alla sezione

    <IfModule dir_module>
       DirectoryIndex index.html 
    
     </IfModule>
  4. Aggiungi index.php come mostrato di seguito

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

In questo modo, sceglie ancora index.html e index.php come indice predefinito, ma dando priorità a index.html perché index.html è precedente a * index.php. Con questo voglio dire che hai sia index.html che index.php nella stessa directory, index.html sarà usato come indice predefinito tranne che scrivi ** index.php * prima di index.hml

Spero che aiuti qualcuno ... Happy Coding


1

Questo funziona come un fascino!

Primo

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

poi dopo quello da

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

per

 <Files ".ht*">
    Require all granted
</Files>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.