• HOME
  • 【MAMP】バーチャルホストで複数サイトをルートパスで管理する方法

【MAMP】バーチャルホストで複数サイトをルートパスで管理する方法

  • 2019年3月16日
  • Web制作

MAMPをサイト制作の際に利用している方は多いと思います。
サーバーにアップロードせずとも、PHPを動かしたり出来て便利ですが、404ページなど、ルートパス(スラッシュから始まる絶対パス)でページを作りたい場合、複数のサイトを管理をしていると画像がリンク切れになって、不便と思っている人がいるかも知れません。

そんな人は、バーチャルホストの設定を変更することで、MAMP内の複数サイトをルートパスで管理すると便利ですよ。

そもそもの、背景として

どういうことかというと、一般的にMAMPをインストールすると

/Applications/MAMP/htdocs/

が作業フォルダとなり、ここに

htdocs/site01/
htdocs/site02/

のように、サイトのデータを保存していくと、ブラウザでアクセスする時のURLはそれぞれ

http://localhost:8888/site01/
http://localhost:8888/site02/

となります。

基本的には、このままでも問題は無いですが、冒頭でも書いたとおり、ルートパスでの制作が必要な場合、
「htdocs」がルートとなるため、リンク切れが起きてしまいます。

例えば、site01で

<img src=”/images/image.jpg” alt=”画像”>

という画像があった場合、

htdocs/site01/images/image.jpg

の画像を読み込んでほしいのに、ブラウザはルートパスなので

htdocs/images/image.jpg

を探しに行ってしまいます。

ルートパスのまま作業したい

対策としてその都度パスを書き換えたり、フォルダ構成を変更することで対応できなくはないですが、手間がかかったり、ミスの元になったり、ちょっと不便な感じは否めません。

でも、バーチャルホストを利用することで、複数サイトがあっても、ルートパスで管理ができるのです。

つまり、ブラウザで

http://localhost:8001/

にアクセスすると「htdocs/site01/」のデータが閲覧でき、
site01で

<img src=”/images/image.jpg” alt=”画像”>

と、スラッシュ始まりの絶対URLにしても、

htdocs/site01/images/image.jpg

の画像を読み込んでくれるように設定することが出来ます。

MAMPのバーチャルホストを設定する

ということで、実際の編集方法です。
変更するファイルは、以下の2つです。

/Applications/MAMP/conf/apache/httpd.conf
/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

順番に説明していきますが、MAMPを停止してから下記作業を行ってください。

httpd.confの編集

まず、httpd.confの中を二箇所編集します。テキストエディタで httpd.conf を開き編集していきます。httpd.confの場所は

/Applications/MAMP/conf/apache/httpd.conf

にあります。ただし、変な操作をしてしまってもすぐ戻せるように、念の為編集前にhttpd.confのバックアップは取っておきましょう。

1つ目の編集箇所。
48行目付近(MAMPのバージョンによっては記載行が異なる場合があります。)、Listen 8888となっている部分の下に、「Listen 8001」「Listen 8002」を追加します。

編集前
Listen 8888

↓↓↓

編集後
Listen 8888
Listen 8001
Listen 8002

管理サイトが他にもあるなら、「Listen 8003」など、サイトの数だけ適宜増やしてください。

次に、579行目付近(MAMPのバージョンによっては記載行が異なる場合があります。)の「# Virtual hosts」の下の行のコメントを外します。
「# Virtual hosts」で検索するなどして見つけてください。

編集前
# Virtual hosts
#Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

↓↓↓

編集後
# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

httpd.confの編集はここまで。

httpd-vhosts.confの編集

次に2つ目のファイル、httpd-vhosts.confを編集します。やっぱりこちらも、バックアップは念のためにとっておきましょう。httpd.confの場所は

/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

にあります。

httpd-vhosts.confに下記の内容を追記します。

<VirtualHost *:8001>
DocumentRoot “/Applications/MAMP/htdocs/site01”
</VirtualHost>
<VirtualHost *:8002>
DocumentRoot “/Applications/MAMP/htdocs/site02”
</VirtualHost>

 

編集作業は以上で完了です。

MAMPを立ち上げて、ブラウザで

http://localhost:8001/
http://localhost:8002/

にアクセスするとそれぞれ

/Applications/MAMP/htdocs/site01
/Applications/MAMP/htdocs/site02

のデータが表示されるようになります。

ということで、バーチャルホストで複数サイトをルートパスで管理する方法でした。

関連記事