index.php ไม่โหลดโดยค่าเริ่มต้น


107

ฉันเพิ่งติดตั้ง CentOS, Apache และ PHP เมื่อฉันเยี่ยมชมเว็บไซต์ของฉันhttp://example.com/myapp/ไซต์ของฉันจะมีข้อความ "ห้าม" โดยค่าเริ่มต้นจะไม่โหลดไฟล์ index.php

เมื่อฉันไปที่http://example.com/myapp/index.phpก็ใช้ได้ดี

มีความคิดอย่างไรในการแก้ไขปัญหานั้น

คำตอบ:


153

ต้องกำหนดค่า Apache ให้รู้จัก index.php เป็นไฟล์ดัชนี

วิธีที่ง่ายที่สุดที่จะทำให้สำเร็จ ..

  1. สร้างไฟล์. htaccess ในรูทเว็บของคุณ

  2. แอดไลน์ ...

DirectoryIndex index.php

นี่คือแหล่งข้อมูลเกี่ยวกับเรื่องนี้ ...
http://www.twsc.biz/twsc_hosting_htaccess.php

แก้ไข: ฉันสมมติว่า apache ได้รับการกำหนดค่าให้อนุญาตไฟล์. htaccess หากไม่เป็นเช่นนั้นคุณจะต้องแก้ไขการตั้งค่าในไฟล์กำหนดค่าของ apache (httpd.conf)


4
มันควรจะอยู่ในไฟล์ php.conf ที่ apache โหลด
staticsan

ฉันคิดว่าคุณหมายถึง php.ini ไม่ว่า apache ของเขาจะไม่รู้จัก index.php เป็นไฟล์ดัชนีไดเรกทอรี การจัดการไฟล์ php นั้นเป็นปัญหาการกำหนดค่า apache อื่นหรือไม่
John Himmelman

1
อย่าลืมรีสตาร์ท apache !! อย่างที่ฉันทำ! : /
Navid Einackchi

102

ในขณะที่การเพิ่ม 'DirectoryIndex index.php' ไปยังไฟล์. htaccess อาจใช้งานได้

บันทึก:

โดยทั่วไปคุณไม่ควรใช้ไฟล์. htaccess

นี่อ้างจากhttp://httpd.apache.org/docs/1.3/howto/htaccess.html
แม้ว่าจะอ้างถึงเวอร์ชันเก่าของ apache แต่ฉันเชื่อว่าหลักการนี้ยังคงใช้ได้

การเพิ่มสิ่งต่อไปนี้ในhttpd.confของคุณ(หากคุณสามารถเข้าถึงได้) ถือเป็นรูปแบบที่ดีกว่าทำให้ค่าใช้จ่ายของเซิร์ฟเวอร์น้อยลงและมีผลเหมือนกันทุกประการ:

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

4
นั่นเป็นสิ่งที่ดีและสวยงามหากคุณสามารถเข้าถึงไฟล์นั้น
Hayden Thring

1
+1 สำหรับสิ่งนั้น เป็นวิธีที่แนะนำเว้นแต่คุณจะไม่มีสิทธิ์เข้าถึง httpd.conf
Matthew Johnson

ฉันเชื่อว่าการเพิ่มสิ่งนี้ลงในไฟล์การกำหนดค่าเริ่มต้น - ssl ก็ใช้ได้เช่นกันหากคุณใช้ HTTPS
Alex W

44

ฉันเดาว่าดัชนีไดเร็กทอรีถูกตั้งค่าเป็น index.html หรือตัวแปรบางตัวให้ลอง:

DirectoryIndex index.html index.php

สิ่งนี้จะยังคงให้ลำดับความสำคัญของ index.html มากกว่า index.php (สะดวกหากคุณต้องการทิ้งหน้าการบำรุงรักษา)


Mine มีลักษณะเช่นนี้ แต่น่าเสียดายที่ดาวน์โหลด index.php แทนที่จะเรียกใช้งาน
Webnet

@Webnet คุณควรพิจารณาเปลี่ยน Type และ LoadModules เป็น php เพื่อให้อ่าน php [ stackoverflow.com/questions/5121495/…
Merey Nurlan

15

สิ่งนี้อาจเป็นประโยชน์กับใครบางคน นี่คือตัวอย่างจาก httpd.conf (Apache เวอร์ชัน 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>

ตอนนี้จะมองหาไฟล์ index.html หากไม่พบจะมองหา index.php


3

ลองสร้างไฟล์. htaccess ด้วยสิ่งต่อไปนี้

DirectoryIndex index.php

แก้ไข: จริงๆแล้วไม่มีแพ็คเกจ 'php-apache' หรืออะไรที่คุณควรจะติดตั้งด้วยทั้งสองอย่าง?


3

ฉันมีปัญหาเดียวกันกับไซต์บนไซต์ที่โฮสต์โดยผู้ดูแลระบบโดยตรงของเรา ฉันเพิ่ม

DirectoryIndex index.php

เป็นส่วนขยาย HTTd ที่กำหนดเอง (ซึ่งเพิ่มโค้ดลงในhttpdไฟล์ไซต์) จากนั้นไซต์จะเรียกใช้ไฟล์index.php.


2

ปัญหาเดียวกันสำหรับฉัน วิธีแก้ปัญหาของฉันคือไม่ได้เปิดใช้งาน mod_dir และ apache2 ไม่ได้ออกข้อผิดพลาดเมื่ออ่านคำสั่งในไฟล์ VirtualHost ของฉัน:

DirectoryIndex index.html

ใช้คำสั่ง:

sudo a2enmod dir
sudo sudo service apache2 restart

แก้ไขปัญหา


1
ฉันคิดว่าคุณหมายถึงa2enmod?
TR_SLimey

1

สำหรับข้อมูล: ใน Apache2 conf บางตัวคุณต้องเพิ่มคำสั่ง DirectoryIndex ใน mods_enabled / dir.conf (ไม่ได้อยู่ใน apache2.conf)


1

หลังจากอ่านทั้งหมดนี้และพยายามแก้ไขฉันมีวิธีง่ายๆในฟอรัม ubuntu ( https://help.ubuntu.com/community/ApacheMySQLPHP ) ปัญหาอยู่ที่โมดูล libapache2-mod-php5 นั่นเป็นสาเหตุที่เบราว์เซอร์ดาวน์โหลดไฟล์ index.php แทนที่จะแสดงหน้าเว็บ ดำเนินการดังต่อไปนี้ หากไม่มีโมดูลส่งคืน sudo a2enmod php5 แสดงว่าปัญหาเกิดจาก libapache2-mod-php5 ล้างลบโมดูลด้วยคำสั่ง sudo apt-get --purge ลบ libapache2-mod-php5 จากนั้นติดตั้งอีกครั้ง sudo apt-get install libapache2-mod-php5


1

ฉันมีอาการคล้าย ๆ ในกรณีของฉันความโง่เขลาของฉันโดยไม่ได้ตั้งใจและยังมีไฟล์ index.html ว่างในโฟลเดอร์รูทของเว็บ Apache ให้บริการสิ่งนี้แทนที่จะเป็น index.php เมื่อฉันไม่ได้ร้องขอ index.php อย่างชัดเจนเนื่องจากDirectoryIndexได้รับการกำหนดค่าดังนี้ในmods-available/dir.conf:

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

นั่นคือ "index.html" จะปรากฏข้างหน้า "index.php" ในรายการลำดับความสำคัญ การลบไฟล์ index.html ออกจากเว็บรูทช่วยแก้ปัญหาได้อย่างเป็นธรรมชาติ โธ่!


1

ทีละขั้นตอนและคำแนะนำแบบเต็มสำหรับ Ubuntu 16.04.4 LTS และ Apache / 2.4.18

" sudo -s"

" cd /etc/apache2/mods-enabled"

" vi dir.conf" และย้าย index.php ไปทางขวาหลัง DirectoryIndex ตามที่ต้องการด้านล่างและบันทึกไฟล์จากนั้นรีสตาร์ทเซิร์ฟเวอร์ apache

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

" service apache2 restart"

หากคุณไม่เห็น dir.conf คุณจะต้องโหลด (google สำหรับวิธีการ)

เสร็จแล้ว


1

โพสต์นี้อาจจะเก่า แต่ฉันแค่โพสต์ในกรณีที่มันช่วยคนอื่นได้ฉันไม่แนะนำให้สร้างไฟล์. htaccess ในรูทเว็บของคุณและเปลี่ยนดัชนี ฉันรู้สึกดีกว่าที่จะทำตามขั้นตอน

  1. ไปที่โฟลเดอร์ conf ของโฟลเดอร์ apache ของคุณคือ

    C:\Apache24\conf

  2. เปิดไฟล์ชื่อ

    httpd.conf

  3. ไปที่ส่วน

    <IfModule dir_module>
       DirectoryIndex index.html 
    
     </IfModule>
  4. เพิ่ม index.php ตามที่แสดงด้านล่าง

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

วิธีนี้ยังคงเลือก index.html และ index.php เป็นดัชนีเริ่มต้น แต่ให้ความสำคัญกับ index.html เนื่องจากindex.htmlมาก่อน * index.php ด้วยเหตุนี้ฉันหมายความว่าคุณมีทั้ง index.html และ index.php ในไดเร็กทอรีเดียวกัน index.html จะถูกใช้เป็นดัชนีเริ่มต้นยกเว้นคุณเขียน ** index.php * ก่อนindex.hml

ฉันหวังว่ามันจะช่วยใครสักคน ... Happy Coding


1

อันนี้ใช้ได้เหมือนมีเสน่ห์!

อันดับแรก

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

จากนั้นหลังจากนั้น

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

ถึง

 <Files ".ht*">
    Require all granted
</Files>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.