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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

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

PHP

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

Q&A

解決済

2回答

2008閲覧

ドメインが当たっていないバーチャルホストで設定しているサイトへのアクセス方法

takujiji

総合スコア24

Apache

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

PHP

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

0グッド

0クリップ

投稿2018/07/20 08:17

VirtualBox内で開発を行っています。

下記のようなプログラムを作成し、「http://example.com/」のページの情報を取得する処理を構築しています。

PHP

1$getGetTests = $this->getApiDataCurl("http://example.com/"); 2 3public function getApiDataCurl($url){ 4 $option = [ 5 CURLOPT_RETURNTRANSFER => true, //文字列として返す 6 CURLOPT_TIMEOUT => 30, // タイムアウト時間 7 ]; 8 9 $ch = curl_init($url); 10 curl_setopt_array($ch, $option); 11 12 $json = curl_exec($ch); 13 $info = curl_getinfo($ch, CURLINFO_HTTP_CODE); 14 $errorNo = curl_errno($ch); 15 16 // OK以外はエラーなので空白配列を返す 17 if ($errorNo !== CURLE_OK) { 18 return []; 19 } 20 21 // 200以外のステータスコードは失敗とみなし空配列を返す 22 if ($info['http_code'] !== 200) { 23 return []; 24 } 25 26 // 文字列から変換 27 $jsonArray = json_decode($json, true); 28 return $jsonArray; 29} 30

取得のプログラムの処理は問題ないのですが、「example.com」内のプログラムから、「http://example.com/」のページの情報が取得できない状態です。

http://example.com/」ドメインのページは、「192.168.56.101」サーバ内のバーチャルホストとして設定してあるサーバです。

デフォルトのドキュメントルート(http://192.168.56.101)
/var/www/html/

バーチャルホストとして設定しているドキュメントルート(http://example.com/ のサイト)
/var/www/virtualhost/example.com/

バーチャルホストの環境には DNSの設定をしてドメインを当てているわけではなく、Windowsの hostsファイルに「192.168.56.101 example.com」を設定して、ブラウザでは「http://example.com/」でアクセスできるようにしています。

ですが、「example.com」内の PHPのプログラムの中から「example.com」内のページにアクセスするときはどのようにすればいいものでしょうか?

http://localhost」「http://localhost.localdomain/」「http://127.0.0.1/」などでは「http://192.168.56.101」の方につながるため、バーチャルドメインで設定している「example.com」の方に接続することができませんでした。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

linuxにも、Macにも、hosts ファイルがあるので、同じように記述すればOKです。

投稿2018/07/20 08:21

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takujiji

2018/07/20 08:41

コメントありがとうございます。 Linuxにも hostsファイルがあることを知りませんでした。 /etc/hosts ファイルに 192.168.56.106 example.com を追加したところ、アクセスができるようになりました。 非常に助かりました!
退会済みユーザー

退会済みユーザー

2018/07/20 08:44

できればだけど、質問にはOSの情報が欲しかった。LinuxにもMacにもと書いたのはそういうこと。
takujiji

2018/07/20 08:46

申し訳ありません。 OSの情報が抜けていることに気づいていませんでした。ご指摘ありがとうございます。 今更ですが、CentOSで環境を作っていました。
guest

0

ルータの制限で自分自身のところに割り当てたドメインにアクセスするのは無理です。
別のところから見てみましょう。例えば、スマホから見るとか。

別回答のように、hostsに登録することによって見ることができるようにはなりますが。

投稿2018/07/20 08:28

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takujiji

2018/07/20 08:43

コメントありがとうございます。 Linuxにも hostsファイルがあることを知りませんでしたが、Linuxの hostsファイルに追加したところ想定の結果を取得することができました。 もしかすると、今後の処理で不具合が出るかもしれませんが、その時はまたよろしくお願いします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問