| この記事の要点 |
|
ドキュメントルートとは
ドキュメントルート(DocumentRoot)は、Apache がブラウザに公開するファイルの起点となるディレクトリです。http://example.com/about.html にアクセスすると、Apache は「ドキュメントルート + /about.html」のファイルを返します。
OS ごとに編集する設定ファイルは少し違いますが、考え方は同じで、DocumentRoot と対応する <Directory> を揃えたうえで、Apache を再起動(再読み込み)します。
OS 別の設定ファイルと初期値
| 環境 | 編集するファイル | 初期のドキュメントルート |
|---|---|---|
| Ubuntu / Debian | /etc/apache2/sites-available/000-default.conf | /var/www/html |
| RHEL / CentOS / Rocky / AlmaLinux | /etc/httpd/conf/httpd.conf | /var/www/html |
| Windows(Apache Lounge 版) | C:\Apache24\conf\httpd.conf | ${SRVROOT}/htdocs |
| Windows(XAMPP) | C:\xampp\apache\conf\httpd.conf | C:/xampp/htdocs |
| macOS(標準同梱) | /etc/apache2/httpd.conf | /Library/WebServer/Documents |
インストール方法によってパスが異なる場合があります。分からないときは apachectl -V(RHEL 系は httpd -V)で表示される HTTPD_ROOT と SERVER_CONFIG_FILE を確認してください。
Ubuntu / Debian での手順
- 設定ファイルを開きます。
sudo vi /etc/apache2/sites-available/000-default.conf <VirtualHost *:80>内のDocumentRootを変更したいパスに書き換え、同じパスの<Directory>を追加します。<VirtualHost *:80> ServerName example.com DocumentRoot /srv/www/myapp <Directory /srv/www/myapp> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>- 文法チェックをして再読み込みします。
sudo apachectl configtest # Syntax OK と出れば問題なし sudo systemctl reload apache2
Ubuntu の /etc/apache2/apache2.conf では、初期状態で /var/www/ 配下だけにアクセス許可(Require all granted)が与えられています。/var/www の外を指定した場合は、上の例のように <Directory> で許可を追加しないと 403 になります。
RHEL / CentOS 系での手順
sudo vi /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html" と、その下にある <Directory "/var/www/html"> の 2 か所を新しいパスに変更します。
DocumentRoot "/srv/www/myapp"
<Directory "/srv/www/myapp">
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
sudo httpd -t # 文法チェック
sudo systemctl restart httpd
SELinux が有効(getenforce が Enforcing)な環境では、新しいディレクトリに Web 公開用のラベルを付けないと、パーミッションが正しくても 403 になります。
sudo semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?"
sudo restorecon -Rv /srv/www
Windows での手順
Apache の設定ディレクトリにある httpd.conf を開き、DocumentRoot と <Directory> を変更します。パスの区切りは スラッシュ(/)で書くのが無難です。
DocumentRoot "D:/web/myapp"
<Directory "D:/web/myapp">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
保存後、サービスとして動かしている場合は「サービス」画面から Apache を再起動するか、管理者権限のコマンドプロンプトで httpd.exe -k restart を実行します。XAMPP ならコントロールパネルで Stop → Start です。
macOS での手順
sudo vi /etc/apache2/httpd.conf
他の環境と同様に DocumentRoot "/Library/WebServer/Documents" と対応する <Directory> を書き換え、sudo apachectl configtest → sudo apachectl restart で反映します。Homebrew で入れた Apache の場合、設定ファイルは $(brew --prefix)/etc/httpd/httpd.conf です。
403 / 404 が出るときの原因
<Directory>のパスが DocumentRoot と一致していない: 末尾のスラッシュや大文字小文字の違いにも注意- 親ディレクトリに実行権限がない:
/home/user/wwwのようにホーム配下を指定すると、/home/userに Apache ユーザーの実行権限(x)がなく 403 になりがち。namei -l /home/user/www/index.htmlで経路上の権限を一覧できる - index ファイルがない:
DirectoryIndex(既定は index.html)に該当するファイルがなく、Options -Indexesの場合は 403 - SELinux: RHEL 系で上記がすべて正しいのに 403 なら、
ls -Zでラベルを確認 - 別の VirtualHost が優先されている:
apachectl -Sでどの設定がどのホスト名に割り当たっているか確認
確認方法
- 設定ファイルの文法エラーがないか(
apachectl configtest) - 新しい公開ディレクトリに index ファイルがあるか(
echo ok | sudo tee /srv/www/myapp/index.htmlなどで仮置きして確認) - Apache 再起動後に 403 / 404 が出ていないか(
curl -I http://localhost/で 200 が返るか) - エラーが出る場合はエラーログを確認(Ubuntu:
/var/log/apache2/error.log、RHEL 系:/var/log/httpd/error_log)
Laravel などのフレームワークを公開する場合は、プロジェクト直下ではなく public ディレクトリをドキュメントルートに指定します。プロジェクト直下を公開すると .env などの設定ファイルが外部から見えてしまう危険があります。
関連
- XAMPPでドキュメントルートを変更する方法
- Apache httpd.confの場所一覧|CentOS・Ubuntu・Windowsの違い
- Apacheで.htaccessを有効化|AllowOverride Allと性能影響
- URL から index.php を消す方法(Apache / Nginx / Laravel / CodeIgniter 完全ガイド)
子ページはありません
人気ページ
- 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 / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- djangoのテンプレートの作成とヘッダー・フッターの共通化 2026-10-03 21:41:49
- テンプレートフラグメント(ヘッダー等の共有化) 2026-10-03 21:41:49
- reCAPTCHA v3 使い方(サンプル付き) 2026-10-03 21:37:05
- Content-Type一覧|MIMEタイプとはとHTTPでの主な使用場面 2026-10-03 21:37:05
- SpringにおけるAOPの使い方 2026-10-03 21:37:05
- X (Twitter) API でツイートできないがエラーが出ない問題の原因と対処 2026-10-03 11:33:01
- X (Twitter) API アプリケーション登録完全ガイド|v2・Bearer Token・OAuth 2.0 PKCE 2026-10-03 11:33:01
- X (Twitter) API 完全ガイド|従量課金の料金・単価(2026年10月)と v2 移行 2026-10-03 11:32:40
- Google DeepMind とは?Gemini・AlphaFold の開発元 2026-10-03 11:26:56
- Cursor とは?AI 統合型コードエディタの使い方・料金 2026-10-03 11:26:56
- Claude (Anthropic) とは?AIチャットの使い方・モデルファミリ・API 2026-10-03 11:26:56
- AIベンダー一覧:OpenAI・Anthropic・Google DeepMind・Microsoft・Meta 2026-10-03 11:26:56
- クラウド・インフラ完全ガイド — AWS/Azure/GCP/Kubernetes 2026-10-03 11:26:56
- テキストエディタ完全比較 (VS Code / Cursor / Vim / Emacs / IDE) 2026-10-03 11:26:56
- プログラミング学習プラットフォーム|Scratch・micro:bit ほか 2026-10-03 11:26:56