MAMPでhtdocs内に複数のローカルホストを作成する方法

最近個人的にあれこれ試す時にMAMPをよく使うのですが、MAMPは通常「MAMP」フォルダ内にある「htdocs」がローカルディレクトリとして設定されていて、その中に必要となるデータを入れていきます。
この場合、作業しているサイトとは別のサイトを表示させたい時に、一旦「htdocs」内に入れてあったデータを退けて、空いた「htdocs」に表示させたいサイトのデータを入れるという面倒な作業が発生してしまいます。
そのため、今までは「htdocs」内に複数のフォルダを作って、そのフォルダごとに別のサイトのデータを入れていました。しかしやり方としてあまりよくありません。
そこで今回はMAMPの設定で複数ローカルホストをたてられるようにしてみます。設定の流れとしては下記の通り。
- httpd.confでhttpd-vhosts.confを使えるようにする
- httpd-vhosts.confで追加のローカルサーバーの設定を行う
ではやってみましょう。
httpd.confの設定
httpd.confの場所は「アプリケーション」フォルダ内の「/MAMP/conf/apache/httpd.conf」にあります。このファイルを編集するのでテキストエディタ等でファイルを開きましょう。

このファイルの574・575行目に下記のような記述があります(MAMPのバージョンによって多少前後する可能性があります)。
# Virtual hosts
#Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.confこの2行目の先頭の「#」を消してコメントアウトします。
# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf「Include」は「包含する」等の意味を持つので、要は「/Application/MAMP/conf/apache/extra/httpd-vhosts.conf」を取り込む設定を行ったわけです。
httpd-vhosts.confの設定
先程のhttpd.confの575行目にも書かれていましたが、httpd-vhosts.confは「アプリケーション」フォルダ内の「/MAMP/conf/apache/extra/httpd-vhosts.conf」にあります。

httpd-vhosts.confを開いてファイルの一番下に新たなローカルホストの設定を追加します。
追加するコードは下記の通り(カギ括弧で囲まれている部分が設定する部分です)。
Listen 「ローカル番号」
<VirtualHost *:「ローカル番号」>
DocumentRoot "「設定したいフォルダのパス」"
<Directory "「設定したいフォルダのパス」">
AllowOverride All
</Directory>
</VirtualHost>
例えば、ローカル番号は8001番で、設定したいフォルダのパスは「/Applications/MAMP/htdocs/8001_sample」で設定すると下記のようになります。
Listen 8001
<VirtualHost *:8001>
DocumentRoot "/Applications/MAMP/htdocs/8001_sample"
<Directory "/Applications/MAMP/htdocs/8001_sample">
AllowOverride All
</Directory>
</VirtualHost> 設定できたら何かファイルを置いて、MAMPを再起動してみて「http://localhost:8001/ 」にアクセスしてみましょう。正しく表示ができていればOKです。
サイトを追加したい場合の手順
この設定が出来ればあとはhttpd-vhosts.confを開いて上記の設定をコピペしてどんどん追加していけばいいわけですが、その時はローカル番号は1ずつ増やしていきます。
特に決まっているというわけではありませんが、その方が管理がしやすいですし、楽です。
だから今回はローカル番号8001で登録しましたが、次追加で登録する時は8002で登録してURLは「http://localhost:8002/」となります。
あとはパスを設定すればその場所が表示されるのですが、このパスはフルパスなので、「/Applications」もしくは「/Users」から始まると思います。もちろん今回設定したhtdocs以外のディレクトリでも指定は可能です。
ちなみに、フルパスをコピーしたい場合はFinderでパスをコピーしたいフォルダを右クリックしてOptionキーを押すとパス名のコピーができます。これをそのままパスの部分にペーストしてやればOKです。

フォルダの管理に関して
いくつもローカルサーバーが立てれるようになるといちいち中身を切り替えなくてよくなるので便利になりますが、同時にフォルダもどんどん増えていって管理が大変になってしまいます。
それに、フォルダの名前を限定しすぎるのも考えものです。
「htdocs内のフォルダを移動する手間」が「httpd-vhosts.confを編集する手間」に変わっただけにすぎないのですから。
そこで、僕の場合は予め「仕事用」「プライベートのサイト用」などざっくりした用途ごとに分けて使う事にしました。

| 8001_htdocs | 元のhtdocsのような役割。何でも入れる。 |
|---|---|
| 8002_work | 仕事に関連するデータはここ。 |
| 8003_work | 仕事用2つ目。 |
| 8004_private | プライベートで何かしたいことがあればここで行う。 |
| 8005_private | プライベート用2つ目 |
5つあれば足りるでしょうし、これ以上増える場合は流石にフォルダ移動する事にします。
全部のフォルダを「8001_htdocs」「8002_htdocs」「8003_htdocs」のようにする方が便利かもとも考えましたが、何でも入れていいフォルダを幾つも使うと、フォルダの整理がしきれない気がしたのでやめました。
何でも入れていいのは1個で十分な気がします。

Google Chromeで「パスワードを保存しますか?」ポップアップを非表示にする方法
macOSのシステム環境設定「Spotlight」の設定見直し
Macでデュアルディスプレイ時に、通知を表示するディスプレイを指定する方法
Alfredで現在開いているフォルダ内の画像をImageOptimで圧縮するWorkflowの作り方
Google Drive内のドキュメントを検索して開けるAlfredのWorkflow「Google Drive Workflow for Alfred」
MacとiPadを同じマウスやキーボードで操作できる「ユニバーサルコントロール」
Path Finder 8のサイドバー設定がたまに初期化されてしまう問題
Google Meetをさらに便利にする便利なChrome拡張機能と、公式でサポートされるようになった機能
Path Finder 8で使える4種類のファイル検索方法
Keyboard Maestroのこれだけ覚えておけば良さそうなアクション紹介
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
macOSのコマンドパレット比較!SpotlightとAlfred、Raycastどれを使えばいい?
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
Macでアプリごとに音量を調節できるアプリ「Background Music」
Macのターミナルでパスワード付きのZIPファイルを作成する方法
MacBook Proでディスプレイのサイズ調整をして作業スペースを広げる
SteerMouseの「自動移動」機能で保存ダイアログが表示されたら自動でデフォルトボタンへカーソルを移動させる
iPhoneでタッチが一切効かなくなった場合に強制再起動する方法