index.php не загружается по умолчанию - PullRequest
100 голосов
/ 05 марта 2010

Я только что установил CentOS, Apache и PHP. Когда я захожу на мой сайт http://example.com/myapp/,, он говорит "запрещено". По умолчанию он не загружает файл index.php.

Когда я посещаю http://example.com/myapp/index.php,, он работает нормально.

Есть идеи, как решить эту проблему?

Ответы [ 13 ]

147 голосов
/ 05 марта 2010

Apache должен быть настроен на распознавание index.php в качестве файла индекса.

Самый простой способ сделать это ..

  1. Создайте файл .htaccess в своем веб-корне.

  2. Добавить строку ...

DirectoryIndex index.php

Вот ресурс по этому вопросу ...
http://www.twsc.biz/twsc_hosting_htaccess.php

Редактировать: я предполагаю, что apache настроен на разрешение файлов .htaccess. Если это не так, вам придется изменить настройку в файле конфигурации apache (httpd.conf)

97 голосов
/ 02 ноября 2011

Хотя добавление «DirectoryIndex index.php» в файл .htaccess может работать,

Примечание:

Как правило, вы никогда не должны использовать .htaccess файлы

Это цитата из http://httpd.apache.org/docs/1.3/howto/htaccess.html
Хотя это относится к более старой версии apache, я считаю, что этот принцип все еще применяется.

Добавление следующего к вашему httpd.conf (если у вас есть доступ к нему) считается лучшей формой, приводит к меньшим нагрузкам на сервер и имеет тот же эффект:

<Directory /myapp>
DirectoryIndex index.php
</Directory>
40 голосов
/ 05 марта 2010

В предположении я бы сказал, что индекс каталога установлен в index.html, или какой-то другой вариант, попробуйте:

DirectoryIndex index.html index.php

Это по-прежнему будет давать index.html приоритет над index.php (удобно, если вам нужно открыть страницу обслуживания)

12 голосов
/ 02 ноября 2014

Это может быть полезно для кого-то. вот фрагмент из httpd.conf (окна Apache версии 2.2)

# 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 голосов
/ 23 сентября 2014

У меня была такая же проблема с сайтом на нашем прямом админском хостинге. Я добавил

DirectoryIndex index.php

в качестве пользовательского расширения httd (которое добавляет код в файл httpd sites), а затем сайт запускает index.php по умолчанию.

3 голосов
/ 05 марта 2010

Попробуйте создать файл .htaccess со следующим

DirectoryIndex index.php

Редактировать: На самом деле, разве нет пакета 'php-apache' или чего-то, что вы должны установить вместе с ними обоими?

1 голос
/ 24 октября 2018

Этот работает как шарм!

Первый

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

затем после этого от

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

до

 <Files ".ht*">
    Require all granted
</Files>
1 голос
/ 16 октября 2018

Это сообщение может быть старым, но я просто публикую его, если это поможет кому-то другому, я бы не советовал создавать файл .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 голос
/ 11 апреля 2018

Пошаговая инструкция и полная инструкция для 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 голос
/ 05 января 2018

У меня был похожий симптом. В моем случае, однако, мой идиотизм был в непреднамеренном также иметь пустой файл 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 из корневого каталога в сети естественным образом решило проблему. D'ой!

...