index.php không tải theo mặc định


Câu trả lời:


153

Apache cần được cấu hình để nhận ra index.php là một tệp chỉ mục.

Cách đơn giản nhất để thực hiện điều này ..

  1. Tạo tệp .htaccess trong thư mục gốc của bạn.

  2. Thêm dòng ...

DirectoryIndex index.php

Đây là tài nguyên liên quan đến vấn đề này ...
http://www.twsc.biz/twsc_hosting_htaccess.php

Chỉnh sửa: Tôi giả sử apache được định cấu hình để cho phép các tệp .htaccess. Nếu không, bạn sẽ phải sửa đổi cài đặt trong tệp cấu hình của apache (httpd.conf)


4
Nó có thể nằm trong tệp php.conf mà apache tải.
staticsan

Tôi nghĩ bạn có nghĩa là php.ini. Bất chấp điều đó, apache của anh ta không nhận ra index.php là một tệp chỉ mục thư mục. Việc xử lý các tệp php của nó có phải là một vấn đề khác về cấu hình apache hay không.
John Himmelman

1
đừng quên khởi động lại apache !! như tôi đa lam! : /
Navid Einackchi

102

Trong khi thêm 'DirectoryIndex index.php' vào tệp .htaccess có thể hoạt động,

GHI CHÚ:

Nói chung, bạn không bao giờ nên sử dụng tệp .htaccess

Điều này được trích dẫn từ http://httpd.apache.org/docs/1.3/howto/htaccess.html
Mặc dù điều này đề cập đến phiên bản cũ hơn của apache, tôi tin rằng nguyên tắc này vẫn được áp dụng.

Việc thêm phần sau vào httpd.conf của bạn (nếu bạn có quyền truy cập vào nó) được coi là hình thức tốt hơn, gây ra ít chi phí máy chủ hơn và có cùng tác dụng:

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

4
đó là tất cả tiền phạt và dandy nếu bạn có quyền truy cập vào tập tin đó
Hayden Thring

1
+1 cho điều đó. Đây là phương pháp ưu tiên trừ khi bạn không có quyền truy cập vào httpd.conf.
Matthew Johnson

Tôi tin rằng việc thêm tệp này vào tệp cấu hình mặc định-ssl cũng tốt, nếu bạn đang sử dụng HTTPS.
Alex W

44

Chắc chắn tôi sẽ nói rằng chỉ mục thư mục được đặt thành index.html hoặc một số biến thể, hãy thử:

DirectoryIndex index.html index.php

Điều này vẫn sẽ ưu tiên index.html hơn index.php (hữu ích nếu bạn cần thiết lập một trang bảo trì)


Của tôi trông giống như thế này nhưng không may là tải xuống index.php thay vì thực thi nó.
Webnet

@Webnet thì bạn nên cân nhắc việc thay đổi Type và LoadModules thành php để nó đọc php [ stackoverflow.com/questions/5121495/…
Merey Nurlan 9/12/19

15

Điều này có thể hữu ích cho ai đó. đây là đoạn mã từ httpd.conf (Apache phiên bản 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>

bây giờ nó sẽ tìm tệp index.html nếu không tìm thấy nó sẽ tìm index.php.


3

Hãy thử tạo tệp .htaccess bằng cách sau

DirectoryIndex index.php

Chỉnh sửa: Trên thực tế, không có gói 'php-apache' hoặc thứ gì đó mà bạn phải cài đặt với cả hai?


3

Tôi đã gặp vấn đề tương tự với một trang web trên trang web do quản trị viên trực tiếp lưu trữ của chúng tôi. Tôi đã thêm

DirectoryIndex index.php

dưới dạng phần mở rộng httd tùy chỉnh (thêm mã vào httpdtệp trang web ) và trang web sau đó chạy index.phptheo mặc định.


2

Vấn đề tương tự đối với tôi. Giải pháp của tôi là mod_dir không được kích hoạt và apache2 không phát ra lỗi khi đọc lệnh trong tệp VirtualHost của tôi:

DirectoryIndex index.html

Sử dụng các lệnh:

sudo a2enmod dir
sudo sudo service apache2 restart

Đã khắc phục sự cố.


1
Tôi nghĩ bạn có nghĩa là a2enmod?
TR_SLimey

1

Để biết thông tin: trong một số conf Apache2, bạn phải thêm lệnh DirectoryIndex trong mods_enabled / dir.conf (nó không nằm trong apache2.conf)


1

Sau khi đọc tất cả những điều này và cố gắng khắc phục, tôi đã nhận được một giải pháp đơn giản trên diễn đàn ubuntu ( https://help.ubuntu.com/community/ApacheMySQLPHP ). Vấn đề nằm ở mô-đun libapache2-mod-php5. Đó là lý do tại sao trình duyệt tải xuống tệp index.php hơn là hiển thị trang web. Làm như sau. Nếu mô-đun trả về sudo a2enmod php5 không tồn tại thì vấn đề là với libapache2-mod-php5. Xóa mô-đun bằng lệnh sudo apt-get --purge remove libapache2-mod-php5 Sau đó cài đặt lại sudo apt-get install libapache2-mod-php5


1

Tôi đã có một triệu chứng tương tự. Tuy nhiên, trong trường hợp của tôi, ngốc của tôi cũng vô tình có một tệp index.html trống trong thư mục gốc của web. Apache đang phục vụ điều này thay vì index.php khi tôi không yêu cầu index.php một cách rõ ràng, vì DirectoryIndexđã được định cấu hình như sau trong mods-available/dir.conf:

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

Đó là, 'index.html' xuất hiện trước 'index.php' trong danh sách ưu tiên. Xóa tệp index.html khỏi gốc web đã giải quyết được vấn đề một cách tự nhiên. Ôi!


1

Hướng dẫn từng bước và đầy đủ cho Ubuntu 16.04.4 LTS và Apache / 2.4.18

" sudo -s"

" cd /etc/apache2/mods-enabled"

" vi dir.conf" và di chuyển index.php đến ngay sau DirectoryIndex như bên dưới và lưu tệp sau đó khởi động lại máy chủ apache.

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

" service apache2 restart"

Nếu bạn không thấy dir.conf thì bạn cần tải nó (google để biết cách thực hiện)

Làm xong.


1

Bài đăng này có thể cũ nhưng tôi chỉ đăng nó vì nó giúp ích cho một số người khác, tôi sẽ không khuyên bạn nên Tạo tệp .htaccess trong thư mục gốc của bạn và thay đổi chỉ mục. Tôi cảm thấy tốt hơn là làm theo các bước

  1. Đi tới thư mục conf của thư mục apache của bạn của tôi là

    C:\Apache24\conf

  2. Mở tệp có tên

    httpd.conf

  3. Đi đến phần

    <IfModule dir_module>
       DirectoryIndex index.html 
    
     </IfModule>
  4. Thêm index.php vào nó như hình dưới đây

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

Bằng cách này, nó vẫn chọn index.html và index.php làm chỉ mục mặc định nhưng ưu tiên index.html vì index.html có trước * index.php. Ý tôi là bạn có cả index.html và index.php trong cùng một thư mục, index.html sẽ được sử dụng làm chỉ mục mặc định ngoại trừ bạn viết ** index.php * trước index.hml

Tôi hy vọng nó sẽ giúp ai đó ... Happy Coding


1

Điều này hoạt động như một sự quyến rũ!

Đầu tiên

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

sau đó sau đó từ

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

đến

 <Files ".ht*">
    Require all granted
</Files>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.