DirectoryIndex は htaccess では機能しますが、apache2 .conf ファイルでは機能しません

DirectoryIndex は htaccess では機能しますが、apache2 .conf ファイルでは機能しません

Ubuntu インストールで index.php をデフォルト ファイルとして使用する必要があります。

追加した

  DirectoryIndex index.php 

/etc/apache2/apache2.conf へ

追加した

<Directory /path/to/website/root/>
    DirectoryIndex index.php 
</Directory>

/etc/apache2/sites-available/mysite.conf に記述し、有効化して再起動する

sudo a2ensite mysite
sudo service apache2 restart

何を見逃したのでしょうか? それでも、サーバーはデフォルトのファイルを読み込みません。

注: DirectoryIndex index.php.htaccess に追加すると目的の効果が得られますが、.conf ファイル経由でこれを行うことをお勧めします。

答え1

DirectoryIndex はどこに置きましたか? .htaccess にそれを追加することは、次のステートメントを置くことと同じです:

<Directory /path/to/htaccess/file/>
DirectoryIndex index.php
</Directory>

DirectoryIndex の周囲にディレクトリ ステートメントを追加してみてください。少しハックっぽいですが、おそらく機能するでしょう。それでも機能しない場合は、vhost 構成全体など、さらに多くの構成を提供してください。

答え2

今日、ほぼデフォルトの Apache 設定で、SLES 11 SP4 の Apache 2.2 で同様の問題が発生しました。問題は、URL で明示的に呼び出されない場合、Apache が既存の index.html ファイルを無視することでした。例: server.domain.tld/dir/

ただし、明示的なファイルで呼び出された場合は、コンテンツが提供されます。例: server.domain.tld/dir/index.hmtl 。したがって、ファイルシステムの権限に問題はありませんでした。htdocs の下にあるすべてのファイルは、グループ OTHERS に対して十分な権限を持っていました。ただし、当時のすべての htdocs ファイルは root.root によって所有されていました。したがって、この「モード」では、Apache は URL に記載されていない場合は index.html を提供しませんでした。

権限自体を変更せずに、htdocs ディレクトリとファイルを SLES (suse linux enterprise Server) の「デフォルト」である所有者「wwwrun.www」に再帰的に戻した瞬間、Apache は通常どおりに index.html を再び提供し始めました。再起動も何も必要ありません。

これがバグなのか機能なのかはわかりません。私たちが経験したことと、その問題を解決した方法をお知らせしたいだけです。

したがって、htdocs ファイルの所有権を確認し、Web サーバーのサービス アカウントとグループによって所有されていることを確認してください。

答え3

代わりに location ディレクティブを使用してみてください。

<Location /path/to/htaccess/file/>
    DirectoryIndex index.php
</Location>

関連情報