index.php не загружается по умолчанию

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

Когда я захожу на http://example.com/myapp/index.php, он работает нормально.

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

13 ответов

Решение

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

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

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

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

DirectoryIndex index.php

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

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

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

НОТА:

В общем, вы никогда не должны использовать файлы.htaccess

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

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

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

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

DirectoryIndex index.html index.php

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

Это может быть полезно для кого-то. вот фрагмент из 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.

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

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

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

DirectoryIndex index.php

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

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

DirectoryIndex index.php

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

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

Первый

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

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

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

в

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

Для информации: в некоторых Apache2 conf вы должны добавить команду DirectoryIndex в mods_enabled/dir.conf (она не находится в apache2.conf)

Прочитав все это и попытавшись это исправить, я получил простое решение на форуме 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 установить libapache2-mod-php5

Та же проблема для меня. Мое решение состояло в том, что mod_dir не был включен, и apache2 не выдавал ошибку при чтении директивы в моем файле VirtualHost:

DirectoryIndex index.html

Используя команды:

sudo a2ensite dir
sudo sudo service apache2 restart

Исправлена ​​проблема.

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

Готово.

Другие вопросы по тегам