web-dev-qa-db-ja.com

index.phpがデフォルトでロードされない

CentOS、Apache、およびPHPをインストールしました。サイトにアクセスすると http://example.com/myapp/ と表示され、「禁止」と表示されます。デフォルトでは、index.phpファイルはロードされません。

http://example.com/myapp/index.php にアクセスすると、正常に機能します。

その問題を修正する方法はありますか?

100
001

Apacheは、index.phpをインデックスファイルとして認識するように設定する必要があります。

これを達成する最も簡単な方法..

  1. Webルートに.htaccessファイルを作成します。

  2. 行を追加...

DirectoryIndex index.php

ここに問題に関するリソースがあります...
http://www.twsc.biz/twsc_hosting_htaccess.php

編集:Apacheが.htaccessファイルを許可するように設定されていると仮定しています。そうでない場合は、Apacheの構成ファイル(httpd.conf)の設定を変更する必要があります。

147
John Himmelman

「DirectoryIndex index.php」を.htaccessファイルに追加すると機能する場合がありますが、

注:

一般に、.htaccessファイルは使用しないでください。

これは http://httpd.Apache.org/docs/1.3/howto/htaccess.html から引用されています
これはApacheの古いバージョンを指しますが、原則はまだ適用されると思います。

httpd.confに以下を追加すると(アクセスできる場合)、より良いフォームと見なされ、サーバーのオーバーヘッドが少なくなり、まったく同じ効果があります。

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

推測では、ディレクトリインデックスはindex.htmlまたは何らかのバリアントに設定されていると思います。

DirectoryIndex index.html index.php

これにより、index.htmlがindex.phpよりも優先されます(メンテナンスページを表示する必要がある場合に便利です)

40
Ben Rowe

これは誰かに役立つかもしれません。これは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が検索されます。

12
Maruf

直接管理者がホストするサイトのサイトでも同じ問題が発生しました。追加した

DirectoryIndex index.php

カスタムのhttd拡張機能(サイトのhttpdファイルにコードを追加)として、サイトはデフォルトでindex.phpを実行しました。

3
Phil Errington

次を使用して.htaccessファイルを作成してみてください。

DirectoryIndex index.php

編集:実際には、「php-Apache」パッケージや、両方でインストールすることになっているものはありませんか?

3
animuson

同様の症状がありました。私の場合、私の愚かさは、意図せずに、Webルートフォルダーに空のindex.htmlファイルも持っていました。 DirectoryIndexmods-available/dir.confで次のように構成されていたため、index.phpを明示的に要求しなかった場合、Apacheはindex.phpではなくこれを提供していました。

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

つまり、優先度リストで「index.html」が「index.php」よりも先に表示されます。 Webルートからindex.htmlファイルを削除すると、自然に問題が解決しました。ど!

1
John Rix

これをすべて読んで修正しようとした後、ubuntuフォーラムで簡単な解決策を得ました( https://help.ubuntu.com/community/ApacheMySQLPHP )。問題はlibapache2-mod-php5モジュールにあります。ブラウザがWebページを表示するのではなく、index.phpファイルをダウンロードするのはそのためです。以下をせよ。 Sudo a2enmod php5が返すモジュールが存在しない場合、問題はlibapache2-mod-php5にあります。コマンドSudo apt-get --purge remove libapache2-mod-php5を使用してモジュールを削除し、再度インストールしますSudo apt-get install libapache2-mod-php5

1
Rupak Rokade

Info:Apache2のいくつかのconfでは、mods_enabled/dir.confにDirectoryIndexコマンドを追加する必要があります(Apache2.confにはありません)

1
Zitun

この投稿は古いかもしれませんが、他の人に役立つ場合にだけ投稿しています。Webルートに.htaccessファイルを作成してインデックスを変更することはお勧めしません。手順に従うほうがいいと思う

  1. 私のApacheフォルダーのconfフォルダーに移動します

    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.phpの前に来るため、index.htmlを優先します。つまり、index.htmlとindex.phpの両方が同じディレクトリにある場合、index.htmlは、index.hmlの前に** index.php *を記述することを除いて、デフォルトのインデックスとして使用されます。 =

私はそれが誰かを助けることを願っています...ハッピーコーディング

1

Ubuntu 16.04.4 LTSおよびApache/2.4.18の手順と完全な手順

Sudo -s

cd /etc/Apache2/mods-enabled

vi dir.conf」と以下のようにDirectoryIndexの直後にindex.phpを移動し、ファイルを保存してからApacheサーバーを再起動します。

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

service Apache2 restart

Dir.confが表示されない場合は、ロードする必要があります(方法についてはgoogle)

できた.

1
Dung

これは魅力のように機能します!

最初の

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

その後はfrom

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

to

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

私にとっても同じ問題です。私の解決策は、mod_dirが有効になっておらず、Apache2がVirtualHostファイルのディレクティブを読み取るときにエラーを発行していなかったことです。

DirectoryIndex index.html

コマンドの使用:

Sudo a2ensite dir
Sudo sudo service Apache2 restart

問題を修正しました。

0
Martlark