| この記事の要点 |
|
ドキュメントルートとは
ドキュメントルート(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・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