🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Apache

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

1回答

2420閲覧

XAMPPでルートパスを使用したいが設定がうまく反映されない

Webtuuuu

総合スコア30

Apache

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2021/01/11 13:25

前提・実現したいこと

タイトルにある通り、ローカル環境でWebサイト開発を進める際に本番環境に合わせてルートパスを使用できるようにしたいです。
以下のサイトを参考に設定しています。
参考:XAMPPでルートパスを使えるようにする方法
参考:XAMPPでドキュメントルートを変更し、ルートパスを使えるようにする
参考:ルートパスをXAMPP(ローカル)環境で使う

発生している問題

参考記事に沿ってルートパスを使用できるように設定しましたが正しく反映されず解決策が不明です。
上記の問題はどのように解決するべきかわからないため質問いたしました。

試したこと

基本的にどの参考サイトでも、修正すべきファイルは以下の3つとなっています。
①httpd.conf
②hosts
③httpd-vhosts.conf(?)
(※③に関しては記述がない参考サイトもありました)

まず、httpd.confの最下部に以下を追加しています。

XAMPPをDドライブに設置しているため、D:\xampp\apache\conf\httpd.confを対象としています

<VirtualHost *:80> DocumentRoot "D:/xampp/htdocs" ServerName localhost </VirtualHost> <VirtualHost *:80> DocumentRoot "D:/xampp/htdocs/siteA ServerName siteA </VirtualHost>

そして、httpd-vhosts.confにも記述するように記載のある参考サイトもありましたので、上記と全く同じコードを
httpd-vhosts.confの最下部に追記しました。

こちらも同様にDドライブなので、D:\xampp\apache\conf\extra\httpd-vhosts.confが対象です。

そして、hostsファイルも修正しています。
こちらはCドライブのC:\Windows\System32\drivers\etc\hostsが対象です。

127.0.0.1 siteA

上記をhostsの最下部に追記しました。

ここまで設定した後、XAMPPを再起動して確認したところ、
http://localhost/…の部分が
http://siteA/…に書き換わっていることを確認しました。

しかし、例えばD:\xampp\htdocs\siteA\の中にindex.htmlがあった場合、
正常であればhttp://siteA/index.htmlで表示されるところが、
http://siteA/siteA/index.html
としなければページを表示できませんでした。

つまり今までlocalhostで表示されていた場所が変わっただけで、ルートパスを使用できるようになったわけではありませんでした。
今回お聞きしたいのはこれが、なぜこのような挙動になったのか、またその解決策をお聞きしたいです。

よろしくお願いいたします。

ちなみに、参考サイト(ルートパスをXAMPP(ローカル)環境で使う)にも記載がある、

# Virtual hosts # Include conf/extra/httpd-vhosts.conf

がコメントアウトされている場合はコメントアウトを外すという部分は、最初からコメントアウトが外れていました。
一点気になるのは、参考サイトではhttpd-vhosts.conf内に記載があるように記述されていますが、私の環境ではhttpd.confの中に記載がありました。

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

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

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

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

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

guest

回答1

0

自己解決

理由はわかりませんが解決しました…

まずhttpd.confに記載していたものは取り消し(何もしていない状態に戻した)。
次にhostsの中に書いた127.0.0.1 siteAの直上に127.0.0.1 localhostと記載。
上記を行ってからApache、XAMPPを再起動したところ希望の動作になりました。

============
後日追記

今回の事象は.htaccessが原因になるようです。

404表示の際にリダイレクト処理するように記述したhtaccessファイルを設置してからXAMPPを動かすとsiteAが使えなくなります。

つまり、htaccessがない状態でsiteAを設定した場合は正しくhttp://siteAが使えるのですが、
404リダイレクトの処理が記述してあるhtaccessが存在する状態で1度でもXAMPPを動かすと、htaccessをフォルダから削除したとしても今後siteAが使えない事象が発生しました。

今後siteAが使えないのでsiteBと設定した場合は正しくhttp://siteBで表示できました。

siteBも同様に404リダイレクトのhtaccessを設置した場合同様の事象が起きたので、
原因としてはhtaccessの404リダイレクトを記述したことにあると思われます。

解決策?としてはhtaccessによる404リダイレクトをかけないこととなりました。

※htaccessにSSIインクルードの許可などが書いてあるだけであれば問題なく動作しました。

投稿2021/01/11 14:10

編集2021/01/12 01:33
Webtuuuu

総合スコア30

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

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

退会済みユーザー

退会済みユーザー

2021/01/11 18:00

理由を追究しないと、また同じ事象が発生したときに苦労しますよ。
Webtuuuu

2021/01/12 01:19

コメントありがとうございます。 おっしゃる通り解決したあとすぐにまた同じ現象が発生しました。 色々と試したところバグ?なのかわかりませんが原因と思われる現象がわかったので回答に追記致します。
退会済みユーザー

退会済みユーザー

2021/01/12 03:18

よろしくお願いします。 今後、同じ事象に遭遇するであろう方々の参考になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問