| この記事の要点 |
|
XAMPP でドキュメントルート(ブラウザで http://localhost/ を開いたときに表示されるフォルダ)を変更したいときは、Apache の設定ファイル httpd.conf にある DocumentRoot と <Directory> の設定を合わせて変更します。片方だけ変えると、ページが表示されなかったり 403 Forbidden になったりと、表示やアクセス制御が意図どおりにならないことがあります。
最短手順(Windows)
- XAMPP コントロールパネルを開き、Apache が起動中なら Stop を押す
- Apache 行の Config ボタン →「Apache (httpd.conf)」を選ぶ(メモ帳などで開く)
DocumentRootの行を新しいパスに書き換える- すぐ下にある
<Directory "C:/xampp/htdocs">のパスも同じパスに書き換える - HTTPS(443 番ポート)も使う場合は、
C:\xampp\apache\conf\extra\httpd-ssl.confの DocumentRoot も同様に書き換える - 保存して、コントロールパネルで Apache を Start する
- 新しいフォルダに置いたファイルが
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 の場所
| OS | httpd.conf の場所 | 既定のドキュメントルート |
|---|---|---|
| Windows | C:\xampp\apache\conf\httpd.conf | C:/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 の再起動まで反映されない
確認方法
- コマンドプロンプトで
C:\xampp\apache\bin\httpd.exe -tを実行し、「Syntax OK」と表示されるか確認する(設定の文法チェック) - Apache が Start できない場合は、コントロールパネルの「Logs」から
error.logを開き、該当行のエラーを確認する - 新しいドキュメントルートに
<?php phpinfo();だけを書いた info.php を置き、http://localhost/info.phpを開く。表示された「DOCUMENT_ROOT」の値が新しいパスになっていれば成功 - 403 や 404 が出る場合は、Directory のパスと DocumentRoot のパスが一字一句同じか見直す
確認に使った info.php は、サーバー情報が丸見えになるため確認後に削除しておきましょう。
関連
- Apacheのドキュメントルートを変更する方法
- httpd.confとは|Apache HTTP Serverのメイン設定ファイルの構成
- Apacheで.htaccessを有効化|AllowOverride Allと性能影響
- Apache HTTP Server エラー集と対処完全ガイド
- XAMPP の Windows インストール手順(ポート競合 / php.ini / ドキュメントルート)
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09