index.php не загружается по умолчанию
Я только что установил CentOS, Apache и PHP. Когда я захожу на мой сайт http://example.com/myapp/, он говорит "запрещено". По умолчанию он не загружает файл index.php.
Когда я захожу на http://example.com/myapp/index.php, он работает нормально.
Есть идеи, как решить эту проблему?
13 ответов
Apache должен быть настроен на распознавание index.php в качестве файла индекса.
Самый простой способ сделать это..
Создайте файл.htaccess в своем веб-корне.
Добавьте строку...
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 в корневом веб-каталоге и изменять индекс. Я чувствую, что лучше следовать шагам
Перейдите в папку conf вашей папки apache.
C:\Apache24\conf
Откройте файл с именем
httpd.conf
Перейти в раздел
<IfModule dir_module> DirectoryIndex index.html </IfModule>
Добавьте к нему 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 для того, как)
Готово.