質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.32%

  • PHP

    21361questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Apache

    1918questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

htaccessを使ってドキュメントルートを操作する方法

受付中

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 239

puser3541

score 13

例えばhtaccessに以下のように書かれてますが、これはhtaccessを置いたディレクトリの中のファイルにアクセスした時に読み込むファイルを記述しているだけではないのでしょうか。
しかしhtaccessを書き換えると実際にドキュメントルートが変更されました。
これはどういう仕組みになっているのでしょうか。

php_value include_path 
.:/LIbrary/Webserver/Documents/saitama/include:/LIbrary/Webserver/Documents/saitama/include/test:/LIbrary/Webserver/Documents/saitama/include/settings

php_value auto_prepend_file /LIbrary/Webserver/Documents/saitama/include/init.php


(init.php)

require_once "class.php";

$_GET = protector_sanitize($_GET) ;
$_POST = protector_sanitize($_POST) ;

(追加)
他の文字列になっていたところを上記のようにsaitamaに変えるとドキュメントルートが変更されました。

(class.php)

define('tokyo-mail', 'example@ls.jp');
define('primary-wordS', 'band,tokyo,kanto,minato');
define('num_directories', 12);

(index.php)

$ms = new box();
$center = centerquery(2);
$tok = new tok();
include_once('class'.'.php');
HtmlTemplate::t_include($tokyo->test, $west->yokohama);
exit();
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • otn

    2018/05/04 08:28

    あなたの主観でなく、客観的な事実が欲しいところです。「それまではドキュメントルートでアクセスしたら何も表示されなかったのが表示されるようになりました。」とは、「http://ホスト名/ でアクセスしたら404エラーになっていたのが、ページが表示されるようになった」という意味でしょうか?

    キャンセル

  • m6u

    2018/05/04 11:15 編集

    質問者さんの言うドキュメントルートとはなにか、を自分の言葉で質問内に追記してください。一般的な用語集に掲載されている内容と同じ認識であればそのページを示すだけでもいいです。察するに、ドキュメントルートとインクルードパスをごっちゃにしていませんかね。

    キャンセル

  • puser3541

    2018/05/04 13:10

    ドキュメントルートは、ホスト名=「〜.com」でアクセスしたときに表示されるパスという意味で使いました。 404エラーかどうかわかりませんが、htaccessを修正する前は真っ白な画面だったと思います。

    キャンセル

回答 3

+1

php_value auto_prepend_file /LIbrary/Webserver/Documents/saitama/include/init.php

で、ドキュメントルートに配置されたファイルが読み込まれる前にinit.phpが読み込まれて処理されます。
init.phpにドキュメントルートを変更するのと同様の処理が書かれているのでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/04 06:50

    コメントありがとうございます。
    init.phpは修正した通りなのですが、それらしい記述は見当たりません。
    init.phpから読み込まれているclass.phpにもそれらしい記述は見当たりませんでした。
    ドキュメントルートが変更されたということ自体、私の勘違いでしょうか。

    キャンセル

  • 2018/05/04 07:01 編集

    原理的にドキュメントルートが.htaccessで変更されることはあり得ないので、(ブラウザから見た場合に、ある条件下でドキュメントルートが変更されたかのように見せることは可能)
    何をもってドキュメントルートが変更されたと思ったのかを追記されると良い回答が得られるかと思います。

    キャンセル

  • 2018/05/04 07:13

    確かにそうでした。
    上記にも書いたのですが、saitamaの部分を書き換えただけでドキュメントルートが変わりました。
    変わったというか、それまではドキュメントルートでアクセスしたら何も表示されなかったのが表示されるようになりました。

    キャンセル

  • 2018/05/04 07:19

    あ、それとなのですが関係があるかわからないのですがhtaccessの記述がマークダウンのやり方を間違ったのか一部しか表示されてなかったのでそこも修正しました。

    キャンセル

  • 2018/05/04 07:31

    > 変わったというか、それまではドキュメントルートでアクセスしたら何も表示されなかったのが表示されるようになりました。

    これだけだと第三者にはほぼノーヒントになってしまっています。
    表示されなかった時のエラーログを読んでみると、なぜ動くようになったのかがわかると思います。

    多分、class.phpの中で何かしているか、ドキュメントルート配下のindex.phpがinit.phpの読み込みを行わないとエラーが出る仕様なんだと思います。

    キャンセル

  • 2018/05/05 08:20

    htaccessを修正していないときはブラウザ画面が白い画面又はこの画面はありませんのような存在しないホスト名を指定した画面になるだけです(白い画面なのか存在しませんのような画面なのかははっきり覚えてないです。すみません。)。
    class.phpは特に関係ないと思われることが少し書かれていただけなので今回の設定とは関係してないと思います。
    saitamaに書き換えただけで、トップページを表示するためのPHPが呼び出され、最終的にトップページのhtmlが表示されてるのでそうした指定をどこかでしていると思うのですが。

    キャンセル

+1

いえ、php_valueはapache設定ファイルに変更をあたえる指定です。

nameの指定を変更しています。

どのように確認されたのか分かりませんが、
提示の指定だけではドキュメントルートは変更していないように思います。

 include_pathについて

require、include、 fopen()、file()、 readfile() および file_get_contents() 関数がファイルを 探すディレクトリのリストを指定します。

 auto_prepend_fileについて

メインファイルの前に自動的に付加されるファイルの名前を指定します。 このファイルは、require 関数のコール時と同様に読み込まれます。 このため、include_path が使用されます。 

auto_prepend_fileに指定されている下記のPHPファイルの内容次第なところもあるのでは。
/LIbrary/Webserver/Documents/saitama/include/init.php

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/04 06:49

    コメントありがとうございます。
    init.phpは修正した通りなのですが、それらしい記述は見当たりません。
    init.phpから読み込まれているclass.phpにもそれらしい記述は見当たりませんでした。
    ドキュメントルートが変更されたということ自体、私の勘違いでしょうか。

    キャンセル

  • 2018/05/04 06:54

    回答にも書いていますが、どうしてドキュメントルートが変更されたと思ったのでしょうか?
    確認の手法や根拠を記載してください。

    キャンセル

  • 2018/05/04 07:13

    上記にも書いたのですが、saitamaの部分を書き換えただけでドキュメントルートが変わりました。
    変わったというか、それまではドキュメントルートでアクセスしたら何も表示されなかったのが表示されるようになりました。

    キャンセル

  • 2018/05/04 07:20

    あ、それとなのですが関係があるかわからないのですがhtaccessの記述がマークダウンのやり方を間違ったのか一部しか表示されてなかったのでそこも修正しました。

    キャンセル

  • 2018/05/04 08:18 編集

    なぜ今回の質問に至ったのか、その背景や、目的部分をもう少し具体的に質問に追記してもらえれば
    それに合った回答やアドバイスができます。
    「ただなんとなくやってみた」だとあまり意味がありません。

    キャンセル

  • 2018/05/05 08:15

    知人が運用しているwebサイトに関わったのがきっかけです。
    htaccessを言われた通りに修正したらドキュメントルートが正常にトップページになったので仕組みが知りたいと思った次第です。
    目的はhtaccessがどうやってドキュメントルートを操作しているのか知りたいということです。
    ※その知人に直接聞くことはいろいろな事情により難しいのでこちらでお聞きしてます

    キャンセル

  • 2018/05/05 09:11

    既にある通り.htaccessだけでドキュメントルートの操作をしているわけではありません。
    include_path を指定してinit.phpをprependで読ませているだけです。
    そのinit.phpからclass.phpを読んでいるので、更に追っていく必要があるかと。
    「それらしい記述が見当たらない」とのことでしたが、本当にそうでしょうか。
    動的に切り替えているのであれば、ただ読んだだけでは(あと初学者とかでは)分からないような書き方をしている可能性があります。
    提示可能な範囲で全て提示された方が良いかと思います。

    あと、蛇足ですが、
    この質問は何をゴールとするのか分からなくなってきてます。

    キャンセル

  • 2018/05/05 09:47

    class.php追記しました。
    ゴールはタイトルの通りですがhtaccessでドキュメントルートをどうやって操作しているのかを把握することです。

    キャンセル

+1

ドキュメントルートは、ホスト名=「〜.com」でアクセスしたときに表示されるパスという意味で使いました。 404エラーかどうかわかりませんが、htaccessを修正する前は真っ白な画面だったと思います。 

ということであれば、ドキュメントルート云々は勘違いです。
単に、環境設定がチャンとされていないときにはPHPプログラムが空白ページを表示していたのが、正しく環境設定すると正常に動くようになったと言うことです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/05 08:12

    saitamaの部分を書き換えるだけですが、その部分がそれ以外の文字列の時は空白を表示というPHPが書かれているということでしょうか。
    空白ページだったのか、このページはありませんのような存在しないURLを指定した時に表示される画面だったかよく覚えていないのですがどちらの場合にしてもそういうことなのでしょうか。

    キャンセル

  • 2018/05/05 10:09

    > よく覚えていないのですが

    確認してください。

    キャンセル

  • 2018/05/05 10:15

    今はちょっと無理です。
    その部分が焦点なのでしょうか?

    キャンセル

  • 2018/05/05 10:22

    ドキュメントルート云々は勘違いなのは明かですが、あなたがそれをどうやって理解するのかというのが今の問題だと思います。なので、焦点かどうかはあなた次第です。

    キャンセル

  • 2018/05/05 10:23

    ドキュメントルートについての勘違いとは具体的にはどの部分のことでしょうか。

    キャンセル

  • 2018/05/05 10:25

    > しかしhtaccessを書き換えると実際にドキュメントルートが変更されました。
    です。

    キャンセル

  • 2018/05/05 10:30

    ということはドキュメントルートはhtaccessを書き換えた後でも変更されていない、ということですよね。
    その場合、どうして書き換えるとブラウザ上の表示が変わるのでしょうか。

    キャンセル

  • 2018/05/05 10:39

    PHPプログラムの動作が変わるためです。

    キャンセル

  • 2018/05/05 10:57

    どこで動作を切り替えているのでしょうか。

    キャンセル

  • 2018/05/05 12:11

    > どこで動作を切り替えているのでしょうか。
    PHPプログラムですね。
    切り替えているというより、正常動作が出来なくて空白になっているのだと思いますが。

    キャンセル

  • 2018/05/05 12:22

    そのプログラムのどのような処理で空白を出しているのかが知りたいのですが。

    キャンセル

  • 2018/05/05 12:40 編集

    プログラムを読んでください。プログラムの動作を知りたかったら、読むしかないです。

    キャンセル

  • 2018/05/05 12:53

    読み込まれてるPHPは読んでますが、それでもよくわからないのでここで質問してます。

    キャンセル

  • 2018/05/05 13:30

    コードが無いと誰もこれ以上のアドバイスは出来ないと思います。

    キャンセル

  • 2018/05/05 13:38

    他に提示していないコードとはどの部分のことでしょうか。

    キャンセル

  • 2018/05/05 21:36

    見ようとしているページのPHPコードです。index.php とかかな?

    キャンセル

  • 2018/05/06 05:00

    index.php追記しました。

    キャンセル

同じタグがついた質問を見る

  • PHP

    21361questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Apache

    1918questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。