◀ 3.

XAMPPでドキュメントルートを変更する方法

この記事の要点
  • XAMPP のドキュメントルート(既定は C:/xampp/htdocs)は Apache の httpd.conf で変更する
  • コントロールパネルの Apache 行「Config」→「Apache (httpd.conf)」で開ける
  • DocumentRoot と、対応する <Directory> の両方を同じパスに書き換える
  • HTTPS も使うなら conf/extra/httpd-ssl.conf の DocumentRoot も変更する
  • 保存後は Apache を Stop → Start。起動しない・403 になるときは error.log を見る
  • htdocs を丸ごと移すより、VirtualHost や Alias で追加する方が安全な場合も多い

XAMPP でドキュメントルート(ブラウザで http://localhost/ を開いたときに表示されるフォルダ)を変更したいときは、Apache の設定ファイル httpd.conf にある DocumentRoot と <Directory> の設定を合わせて変更します。片方だけ変えると、ページが表示されなかったり 403 Forbidden になったりと、表示やアクセス制御が意図どおりにならないことがあります。

最短手順(Windows)

  1. XAMPP コントロールパネルを開き、Apache が起動中なら Stop を押す
  2. Apache 行の Config ボタン →「Apache (httpd.conf)」を選ぶ(メモ帳などで開く)
  3. DocumentRoot の行を新しいパスに書き換える
  4. すぐ下にある <Directory "C:/xampp/htdocs"> のパスも同じパスに書き換える
  5. HTTPS(443 番ポート)も使う場合は、C:\xampp\apache\conf\extra\httpd-ssl.conf の DocumentRoot も同様に書き換える
  6. 保存して、コントロールパネルで Apache を Start する
  7. 新しいフォルダに置いたファイルが http://localhost/ファイル名 で開けるか確認する

httpd.conf の変更箇所

既定の httpd.conf には、おおむね次のような記述があります(XAMPP のバージョンによって Options の内容などは多少異なります)。

DocumentRoot "C:/xampp/htdocs"
<Directory "C:/xampp/htdocs">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

たとえば D:/work/www をドキュメントルートにする場合は、次のように 2 か所を書き換えます。

DocumentRoot "D:/work/www"
<Directory "D:/work/www">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

なぜ 2 か所変える必要があるのか

DocumentRoot は「URL の / をどのフォルダに対応させるか」を決める設定です。一方 <Directory> ブロックは「そのフォルダへのアクセスを許可するか、.htaccess を有効にするか」などの権限を決めます。Apache の基本設定ではルート(/)全体へのアクセスが拒否されているため、DocumentRoot だけを変えて Directory を古いパスのままにすると、新しいフォルダには許可が与えられず 403 Forbidden になります。また、AllowOverride が効かず .htaccess が無視されることもあります。

OS ごとの httpd.conf の場所

OShttpd.conf の場所既定のドキュメントルート
WindowsC:\xampp\apache\conf\httpd.confC:/xampp/htdocs
macOS(XAMPP インストーラ版)/Applications/XAMPP/xamppfiles/etc/httpd.conf/Applications/XAMPP/xamppfiles/htdocs
Linux/opt/lampp/etc/httpd.conf/opt/lampp/htdocs

インストール先を変えている場合はパスも変わります。コントロールパネルの Config ボタンから開けば、実際に使われているファイルを確実に開けます。

ドキュメントルートを変えずに済む方法

「プロジェクトごとに別フォルダで開発したい」という目的なら、ドキュメントルート自体は変えずに次の方法を使う方が、XAMPP のダッシュボードや phpMyAdmin を壊さずに済みます。

  • Alias: http://localhost/myapp/ を別フォルダに対応させる
  • VirtualHost: C:\xampp\apache\conf\extra\httpd-vhosts.conf に設定を書き、myapp.localhost のような名前で別フォルダを公開する
# httpd-vhosts.conf の例
<VirtualHost *:80>
    ServerName myapp.localhost
    DocumentRoot "D:/work/myapp/public"
    <Directory "D:/work/myapp/public">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Laravel のように公開フォルダが public になっているフレームワークでは、VirtualHost で public を指す方法がよく使われます。VirtualHost を 1 つでも定義すると、localhost 用の VirtualHost も別途定義しておかないと、localhost へのアクセスが最初の VirtualHost に吸い込まれる点に注意してください。

よくある落とし穴

  • パス区切り: Windows でも /(スラッシュ)で書く。末尾のスラッシュは DocumentRoot と Directory で揃える
  • 引用符: パスに空白を含む場合は必ずダブルクォートで囲む。全角の引用符になっていないか確認する
  • 日本語や OneDrive 配下のパス: 文字コードや同期の影響でトラブルになりやすい。英数字だけのローカルフォルダを使う
  • ダッシュボードが消える: http://localhost/dashboard/ は htdocs 内にあるため、ドキュメントルートを移すと表示されなくなる(phpMyAdmin は別の Alias なので通常は影響しない)
  • index ファイルがない: フォルダに index.php や index.html がなく、Options から Indexes を外していると 403 になる
  • 再起動忘れ: 設定は Apache の再起動まで反映されない

確認方法

  1. コマンドプロンプトで C:\xampp\apache\bin\httpd.exe -t を実行し、「Syntax OK」と表示されるか確認する(設定の文法チェック)
  2. Apache が Start できない場合は、コントロールパネルの「Logs」から error.log を開き、該当行のエラーを確認する
  3. 新しいドキュメントルートに <?php phpinfo(); だけを書いた info.php を置き、http://localhost/info.php を開く。表示された「DOCUMENT_ROOT」の値が新しいパスになっていれば成功
  4. 403 や 404 が出る場合は、Directory のパスと DocumentRoot のパスが一字一句同じか見直す

確認に使った info.php は、サーバー情報が丸見えになるため確認後に削除しておきましょう。

関連

Post Share
子ページ

子ページはありません

同階層のページ
  1. インストール方法
  2. ポート番号の競合
  3. ドキュメントルート(htdocs)の変更方法