• 締切済み

Apacheで、indexの拡張子別に優先順位を付けたい。

あるディレクトリにindex.htmlとindex.phpのファイルがあるとします。 そこに、仮にhttp://www.○○.com/ というURLでアクセスできるとします。 ここに、ブラウザで「http://www.○○.com/」にアクセスすると、現在はindex.phpが表示されるようになっています。これを、どんな場合でもindex.htmlを表示させるようにしたいのですが、Apacheの設定でどこを変更すればよいのか分かりません。 関係ありそうな設定は、DirectoryIndexなのですが、現在は DirectoryIndex index.html index.html.var index.php という設定になっています。一応、設定通りに動いていることになりますが、これを拡張子別に、明示的に優先順位を付けたいと考えています。 index.htmlにアクセスできるようにするために、何か設定方法などありますでしょうか? Apacheバージョンは、2.0.54となります。 よろしくお願いいたします。

みんなの回答

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

>全部のディレクトリに.htaccessを置くのも管理上面倒 locationディレクティブやdirectoryディレクティブを使えば.htaccessの置いてある階層から下に有る物はそれで制御できるよ。 それと、httpd.confを変更したらapacheは再起動しないと反応しないので注意。 自分でいじれる訳じゃなくてそういうのは .htaccess でしかできない、というなら .htaccess で変更できるのが何であるのかを確認した方が良いよ。 つまりこれの設定の事 (上位階層の .htaccess または httpd.conf) http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride これで許可されていない場合は DirectoryIndex で何を書いても有効にならないから。。。

ikazuti
質問者

お礼

質問する前から、当然apacheの再起動は何度もやってますが、やはり変化はないですね。上位階層にも設定関係のファイルはなかったですし。 何故かどうやっても出来ないので、.htaccessを必要な箇所に置くようにしました。 ご回答、有り難うございました。

  • okg00
  • ベストアンサー率39% (1322/3338)
回答No.1

http://httpd.apache.org/docs/2.0/ja/mod/mod_dir.html rootやドキュメントルートのDirectoryIndexをご質問の形に書き換えればOKのはずです。書き換えた後、Apacheを再起動してください。 DirectoryIndex index.html index.html.var index.php の状態で、左が優先されます。 >どんな場合でもindex.htmlを表示させる なら DirectoryIndex index.html で良いのでは?でも、URLをindex.phpまで入力されると表示されますので、要らないファイルは削除してください。

ikazuti
質問者

お礼

うーん、色々とやってみてはいるのですが、やはり変わりません。 仕方ないので、今のところ必要な箇所に.htaccessを置くようにしています。 ご回答、有り難うございました。

ikazuti
質問者

補足

> DirectoryIndex index.html index.html.var index.php > の状態で、左が優先されます。 そうなのですか? 現在、そのように書いてるはずなのですが、上手く表示されません。 何か、他に原因があるんでしょうか……? ちょっと調べてみます。 > DirectoryIndex index.html > で良いのでは? 説明が不足していて済みません。inde,phpのみがあるディレクトリもあるので、外せなかったりします(汗 .htaccessでディレクトリ毎に設定を変える方法も考えましたが、全部のディレクトリに.htaccessを置くのも管理上面倒だったりするので……

関連するQ&A

  • Apacheのバーチャルホストの設定について

    Apacheでvirtualhostの設定をしているのですがうまくいきません。 ホスト:ドキュメントルート v1.hoge.com:/var/www/v1/ v2.hoge.com:/var/www/v2/ v3.hoge.com:/var/www/v3/ です。 設定は <VirtualHost *:80> Servername v1.hoge.com:80 DocumentRoot "/var/www/v1" <Directory "/var/www/v1/"> Options Includes FollowSymLinks ExecCGI </Directory> </VirtualHost> <VirtualHost *:80> Servername v2.hoge.com:80 DocumentRoot "/var/www/v2" <Directory "/var/www/v2/"> Options Includes ExecCGI </Directory> </VirtualHost> <VirtualHost *:80> Servername v3.hoge.com:80 DocumentRoot "/var/www/v3" <Directory "/var/www/v3/"> Options Includes FollowSymLinks </Directory> </VirtualHost> で、三つともv*の部分とOptionsがちがうだけになっています。 http://v1.hoge.com/では普通にアクセスできるのですが、http://v2.hoge.com/とhttp://v3.hoge.com/でアクセスしようとするとなぜか/var/www/v1/foo/index.cgiが表示されます。ただしURLは変わらすhttp://v2.hoge.comのままです。ただしhttp://v2.hoge.com/index.htmlと入力するときちんと表示されます。DirectoryIndexでindex.htmlを指定しても無駄でした。 /v1には/v1/index.htmlと/v1/foo/index.cgi、/v2には/v2/index.html、/v3には/v3/index.htmlだけが入っています。 /etc/hostsとか/etc/hosts.confとか/etc/nsswitch,confなども試しました。DNSは登録してからすでに一か月ほど経過していますのでとっくに浸透していると思いますが、v1を設定した時期とv2,v3を設定した時期は半年ぐらい空いてます。 同様の構成を別のサーバーでも試しましたが、症状は同じでした。まあ両方自分で同じように建てたので同じように間違っているだけかもしれませんが。。。 気持ち悪いのは次の四点です。 1.ドキュメントルートが別のホストになる 2.別のホストのドキュメントルートどころかその下にあるCGIが実行される 3.DirectoryIndexが効かない 4.アクセスがやけに遅い(v1とかは普通の速度) エラーログには何もなし、アクセスログにはhttp://v2.hoge.comにアクセスした記録しかないです。 httpd.confではNameVirtualHost *:80と記述し、DocumentRootはコメントアウトしています。 CentOS 6.5 Apache 2.2.15 です これくらいの情報で十分でしょうか?足りなければお叱りください。 よろしくお願いします。

  • Apacheでのコンテントネゴシーエーションのやり方

    会社のApacheでローカルなサーバを動かしています。 ある日、拡張子なしでCGIを実行したいと思い立ちました。 具体的には、 http://localhost/ にアクセスしたときに、「index.*」を探して、結局「index.cgi」を実行するようにしたいです。 そこで、設定ファイル(httpd.conf)を次のように変更しました。 ・ドキュメントルートのOptionsにExecCGIとMultiViewsを追加 Options FollowSymLinks ExecCGI MultiViews ・DirectoryIndexにindexと指定 DirectoryIndex index これでできるかと思ったのですが、 http://localhost/ にアクセスすると「403 Forbidden」が表示されてしまいます。さらに、 http://localhost/index にアクセスすると「404 Not Found」となります。 普通に http://localhost/index.cgi としてアクセスすると、問題なくページが表示されます。 タイプマップを使えば実現できるのですが、一々「.var」ファイルを作成するのが面倒なので、一括で行いたいと思っております。 どこの設定を見直せばよろしいのでしょうか? ご教示ください。よろしくお願い致します。 OS : Linux debian 2.6.18-6-486 httpd : Apache/2.2.8 (Unix) perl : v5.10.0 built for i686-linux

  • Apacheのhttp.confの中の設定に書く順番はある?

    Apacheのhttp.confの中の設定に書く順番はあるのでしょうか? ディレクトリインデクスを設定したい(index.php)のですが、うまくできません。 <IfModule dir_module> DirectoryIndex index.html index.php </IfModule> と書けばよいとあるのですが、これを書いて、再起動させても、ブラウザでディレクトリを指定してもうまくいかず、index.phpまで指定するとうまく表示されます。 また、httpd.confは、Ubuntuのaptでインストールしたら白紙だったので、自分で書いていっています。 よろしくお願いします。

  • Apacheのディレクトリ構成

    Apacheでテストサーバーを構築したいと思っています。 ディレクトリ構成は、 (1)/var/www/html/配下に通常のドキュメントを (2)/var/www/html/mrtg配下にMRTGのドキュメントを配置しています。 Apacheの設定DocumentRootは、/var/www/htmlです。 http://192.168.1.100/index.htmlでアクセスすると(1)が表示されます。 しかし、http://192.168.1.100/mrtg/index.htmlでアクセスすると、 403エラーになってしまいます。 その時エラーログには「client denied by server configuration: /var/www/mrtg/index.html」と表示されていました。 どうやら正しく(2)のアドレスを見に行ってないようなので、いろいろ試したのですがどうもうまくいきません。何が悪いのでしょうか?

  • PHP5とApache2.2.2を選びましたが。。。

    現在、PHP5の設定で戸惑っています。 httpd.confファイルでの設定で、 LoadModule php5_module D:/php/php5apache2.dll AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps DirectoryIndex index.html index.php を追記しましたが、どうしても115行目の LoadModule php5_module D:/php/php5apache2.dll でアラーらしき症状が出てPHPが動作してくれません。 cgi,phpの動作ディレクトリは”D”で設定しています。 どなたかアドバイスの程、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • apacheの動作が…

    DocumentRoot /var/www/html にした場合PHPの実行ができずに403エラー /var/www/testにするとindex.phpは見えるのだが、 それ以下のディレクトリの参照ができない と、いう症状で困っています。 <Directory>を書いてみたり色々してはいるのですが、対処できそうもありません。 ここでは?と思う所があればご助言お願いいたします。 ちなみにFedora+apache2+php5です。 test以下に置いた時index.phpは動作してるので、そこら辺ではないのだと思いますが・・・

  • apache の DocumentRoot は分かったのですが・・・

    apache の DocumentRoot は分かったのですが・・・ apache をインストールしました。   /etc/apache2/sites-enabled/000-default を見ると、   DocumentRoot /var/www と書いてあります。そのすぐ下に、   <Directory />   ・・・   </Directory> という箇所があります。 ここで疑問なのですが、、、 外部からアクセスされるのは、DocumentRoot(/var/www)以下のディレクトリですよね? ルート( / ) はどのみちアクセスされないと思うのですが、なぜ、"/" に関する設定が必要なのでしょうか?   <Directory /var/www/> との違いがよく分かりません。

  • Apacheのディレクトリインデックスの設定方法

    WordPressでHPを作成しようと思いたち、MySQLやPHP、Apacheをインストール・設定していたのですが http://www.adminweb.jp/apache/docroot/index2.html (Admin Web様のサイト) 上記HPに記載されているとおりに、ディレクトリインデックスについて学んでいたのですが hello.htmlをC:\Apache24\htdocs上に置き、httpd.confのディレクトリインデックスの部分を何度書き換えてもindex.htmlしか参照されず、困っています 試しに他にもhtmlを作ってみたのですが、結局意味はなく・・・ これができないために、WordPressのインストールも先に進めることができず、どうしていいかわかりません どうすればindex.html以外を表示できるようになるでしょうか?

  • ドメイン名でBasic認証を分岐させる方法

    現在公開しているWebサイトは異なる2つのドメインでアクセスでき、 両者ともサーバ上の同じディレクトリを参照するようになっています。 つまり、下記のような構成です。 (1) http://sample1.com/ でアクセスした場合  → サーバ上の「/var/www/index.php」を表示 (2) http://sample2.com/ でアクセスした場合  → これも同じくサーバ上の「/var/www/index.php」を表示 ※index.phpで表示内容を分岐しています このたび、上記の「sample2.com」の方にだけ Basic認証によるアクセス制限をかけることになりました。 普通に考えれば/var/www/にhtpasswdとhtaccessを置けばよいのですが、 それだとsample1.comの方も巻き添えでアクセス制限がかかってしまいます。 このような場合に、うまくsample2.comの方にだけ Basic認証をかけることは可能でしょうか? なお、できればhtaccessだけで解決したいのですが、 一応サーバのroot権限は持っているため、Apacheの設定もいじれます。 サーバはLAMPで、Ubuntu10.04 + Apache2.2 + PHP5.3 です。 よろしくお願いします。

  • index.html.varって何ですか?

    index.html.varって何ですか? httpサーバーの設定ファイル httpd.confの DirectoryIndexのデフォルトとして index.htmlとindex.html.varが指定されています。 index.htmlは分かるとして、index.html.varが何か分かりません。