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
のデータが表示されるようになります。
ということで、バーチャルホストで複数サイトをルートパスで管理する方法でした。