index.php tidak dimuat secara default

Jawaban:

153

Apache perlu dikonfigurasi untuk mengenali index.php sebagai file indeks.

Cara termudah untuk mencapai ini ..

  1. Buat file .htaccess di root web Anda.

  2. Tambahkan garis ...

DirectoryIndex index.php

Berikut adalah sumber daya mengenai masalah tersebut ...
http://www.twsc.biz/twsc_hosting_htaccess.php

Edit: Saya berasumsi apache dikonfigurasi untuk mengizinkan file .htaccess. Jika tidak, Anda harus mengubah pengaturan di file konfigurasi apache (httpd.conf)

John Himmelman
sumber
4
Mungkin seharusnya ada di file php.conf yang dimuat apache.
staticsan
Saya pikir maksud Anda php.ini. Terlepas dari itu, apache-nya tidak mengenali index.php sebagai file indeks direktori. Apakah penanganan file php adalah masalah konfigurasi apache lainnya.
John Himmelman
1
jangan lupa restart apache !! seperti yang saya lakukan! : /
Navid Einackchi
102

Meskipun menambahkan 'DirectoryIndex index.php' ke file .htaccess mungkin berhasil,

CATATAN:

Secara umum, Anda tidak boleh menggunakan file .htaccess

Ini dikutip dari http://httpd.apache.org/docs/1.3/howto/htaccess.html
Meskipun ini mengacu pada versi apache yang lebih lama, saya yakin prinsipnya masih berlaku.

Menambahkan yang berikut ini ke httpd.conf (jika Anda memiliki akses ke sana) dianggap bentuk yang lebih baik, menyebabkan lebih sedikit overhead server dan memiliki efek yang sama persis:

<Directory /myapp>
DirectoryIndex index.php
</Directory>
M_M
sumber
4
itu bagus dan keren jika Anda memiliki akses ke file itu
Hayden Thring
1
1 untuk itu. Ini adalah metode yang disukai kecuali Anda tidak memiliki akses ke httpd.conf.
Matthew Johnson
Saya yakin menambahkan ini ke file konfigurasi default-ssl juga baik-baik saja, jika Anda menggunakan HTTPS.
Alex W
44

Sepertinya saya akan mengatakan indeks direktori disetel ke index.html, atau beberapa varian, coba:

DirectoryIndex index.html index.php

Ini akan tetap memberikan prioritas index.html di atas index.php (berguna jika Anda perlu membuka halaman pemeliharaan)

Ben Rowe
sumber
Milik saya terlihat seperti ini tetapi sayangnya mengunduh index.php alih-alih menjalankannya.
Webnet
@Webnet maka Anda harus mempertimbangkan untuk mengubah Type dan LoadModules ke php sehingga terbaca php [ stackoverflow.com/questions/5121495/…
Merey Nurlan
15

Ini mungkin bisa membantu seseorang. ini cuplikan dari httpd.conf (Apache versi 2.2 windows)

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

sekarang ini akan mencari file index.html jika tidak ditemukan maka akan mencari index.php.

Maruf
sumber
3

Coba buat file .htaccess dengan yang berikut ini

DirectoryIndex index.php

Sunting: Sebenarnya, bukankah ada paket 'php-apache' atau sesuatu yang seharusnya Anda instal dengan keduanya?

animuson
sumber
3

Saya memiliki masalah yang sama dengan situs di situs yang dihosting admin langsung kami. saya tambahkan

DirectoryIndex index.php

sebagai ekstensi httd khusus (yang menambahkan kode ke httpdfile situs ) dan situs kemudian menjalankannya index.phpsecara default.

Phil Errington
sumber
2

Masalah yang sama bagi saya. Solusi saya adalah mod_dir tidak diaktifkan dan apache2 tidak mengeluarkan kesalahan saat membaca arahan di file VirtualHost saya:

DirectoryIndex index.html

Menggunakan perintah:

sudo a2enmod dir
sudo sudo service apache2 restart

Memperbaiki masalah.

Martlark
sumber
1
Saya pikir maksud Anda a2enmod?
TR_SLimey
1

Untuk info: di beberapa konfigurasi Apache2 Anda harus menambahkan perintah DirectoryIndex di mods_enabled / dir.conf (tidak terletak di apache2.conf)

Zitun
sumber
1

Setelah membaca semua ini dan mencoba memperbaikinya, saya mendapat solusi sederhana di forum ubuntu ( https://help.ubuntu.com/community/ApacheMySQLPHP ). Masalahnya terletak pada modul libapache2-mod-php5. Itulah mengapa browser mendownload file index.php daripada menampilkan halaman web. Lakukan hal berikut. Jika sudo a2enmod php5 return module tidak ada maka masalahnya ada pada libapache2-mod-php5. Bersihkan, hapus modul dengan perintah sudo apt-get --purge hapus libapache2-mod-php5 Kemudian instal lagi sudo apt-get install libapache2-mod-php5

Rupak Rokade
sumber
1

Saya memiliki gejala yang serupa. Namun dalam kasus saya, kebodohan saya adalah secara tidak sengaja juga memiliki file index.html kosong di folder root web. Apache melayani ini daripada index.php ketika saya tidak secara eksplisit meminta index.php, karena DirectoryIndexdikonfigurasi sebagai berikut di mods-available/dir.conf:

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

Artinya, 'index.html' muncul di depan 'index.php' dalam daftar prioritas. Menghapus file index.html dari root web secara alami menyelesaikan masalah. D'oh!

John Rix
sumber
1

Langkah demi langkah dan instruksi lengkap untuk Ubuntu 16.04.4 LTS dan Apache / 2.4.18

" sudo -s"

" cd /etc/apache2/mods-enabled"

" vi dir.conf" dan pindahkan index.php ke kanan setelah DirectoryIndex seperti di bawah ini dan simpan file lalu restart server apache.

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

" service apache2 restart"

Jika Anda tidak melihat dir.conf maka Anda harus memuatnya (google untuk mengetahui caranya)

Selesai.

Kotoran
sumber
1

Posting ini mungkin sudah lama tetapi saya hanya mempostingnya jika itu membantu orang lain, saya tidak akan menyarankan untuk Membuat file .htaccess di root web Anda dan mengubah indeks. Saya merasa lebih baik mengikuti langkah-langkahnya

  1. Buka folder conf dari folder apache milik saya

    C:\Apache24\conf

  2. Buka file bernama

    httpd.conf

  3. Pergi ke bagian tersebut

    <IfModule dir_module>
       DirectoryIndex index.html 
    
     </IfModule>
  4. Tambahkan index.php ke dalamnya seperti yang ditunjukkan di bawah ini

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

Dengan cara ini, ia masih memilih index.html dan index.php sebagai indeks default tetapi mengutamakan index.html karena index.html datang sebelum * index.php. Maksud saya, Anda memiliki index.html dan index.php dalam direktori yang sama, index.html akan digunakan sebagai indeks default kecuali Anda menulis ** index.php * sebelum index.hml

Saya harap ini membantu seseorang ... Selamat Coding

Lawrence yang luar biasa
sumber
1

Yang ini bekerja seperti jimat!

Pertama

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

lalu setelah itu dari

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

untuk

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