Apacheのリバースプロキシを利用して、SERVER_NAMEがリバースプロキシサーバのIPになっちゃう場合は、リバースプロキシ側のApacheに以下の設定を追加。
ProxyPreserveHost On
PHPプログラムでSERVER_NAMEの値を超利用しまくりな場合は、問題ないようならぶち込んじゃってもいいかも。
$_SERVER['SERVER_NAME'] = isset($_SERVER['X_FORWARDED_HOST']) ? $_SERVER['X_FORWARDED_HOST'] : $_SERVER['SERVER_NAME'];
システム環境設定>共有>Web共有をチェック
httpd.confの設定
$ sudo vim /etc/apache2/httpd.conf
設定を上書きできないと困るので180行目のAllowOverrideを変更
AllowOverride All
PHPを利用可能にするため116行目のコメントアウトを外す
LoadModule php5_module libexec/apache2/libphp5.so
ヴァーチャルホストの設定ファイルvhosts以下に配置し読み込めるように最後の行に追加
デフォルトだと469行目でヴァーチャルホストの設定を読み込んでいるようだが、最終行のIncludeでPHPの設定が行われているので、それ以降に設定を書かないとPHPを利用できないため
Include /private/etc/apache2/vhosts/*.conf
ヴァーチャルホストの設定ファイルを作成
ファイル名はお好みで
$ sudo vim /etc/apache2/vhosts/httpd-vhosts-hoge.example.com.conf
ファイルはhogeユーザのSite以下にドメインディレクトリを作成し、そこをドキュメントルートにしています
localhostから接続できるようにAllow fromを追加
<VirtualHost *:80>
ServerName hoge.example.com
DocumentRoot /Users/hoge/Sites/hoge.example.com
<Directory /Users/hoge/Sites/hoge.example.com>
Allow from ::1
Allow from 127.0.0.1
</Directory>
ErrorLog /var/log/apache2/hoge.example.com-error_log
CustomLog /var/log/apache2/hoge.example.com-access_log combined
</VirtualHost>
Apache設定ファイルにミスがないかチェック
sudo apache2ctl configtest
大丈夫なようなら再起動
sudo apache2ctl -k restart
hostsファイルに名前解決できるように追加
sudo vim /etc/hosts
::1 hoge.example.com
127.0.0.1 hoge.example.com