【レンタルサーバー】ディレクトリ構成ミスによるWebアプリが表示されない要因
はじめに
レンタルサーバーにWebアプリをアップロードしても、なぜかブラウザでアクセスできない…
そんな経験はありませんか?
Webアプリが表示されない原因は様々ありますが、本記事では、私自身が体験したレンタルサーバーを使ってWebアプリをデプロイする際に直面しやすい、ディレクトリ構成に関する注意点について解説します。具体的なディレクトリ構造や対処法も紹介します。
環境情報
- レンタルサーバー:お名前.com
- WEBアプリケーションフレームワーク:Laravel
問題の背景
Webプロジェクトをアップロードし、URLへアクセスしたところ...
「404 Not Found」「403 Forbidden」エラーが表示される
しかし、FTP上でファイルは確かに存在している。パーミッションも問題ない。なぜ?
ディレクトリ構成(修正前)
/ユーザー名/
├─ laravel-app/
│ ├─ app/
│ ├─ public/
│ │ └─ index.php
│ │ └─ .htaccess
│ ├─ …/
└─ public_html/
└─ xxx.jp/ ← ドメイン名フォルダが自動生成されている
原因:「ドメイン名フォルダ」
お名前.comのレンタルサーバーでは、マルチドメイン対応の仕様として、public_html配下にドメイン名フォルダが自動生成されます。
このため、public_html/xxx.jp/
のような配置になり、Web公開用ファイルをこの中に置かないと正しく表示されません。
解決策:public配下のファイルをxxx.jp/直下に配置
最も簡単な方法は、public
フォルダの中身をxxx.jp/
の直下に移動し、index.php
のパスを修正することです。
ディレクトリ構成(修正後)
/ユーザー名/
├─ laravel-app/ ← Laravel本体(Web公開しない、安全な場所)
│ ├─ app/
│ ├─ public/
│ ├─ …/
│ └─ .env ← Web公開しないディレクトリ内に必ず配置
└─ public_html/
└─ xxx.jp/ ← Web公開用ディレクトリ
├─ index.php ← laravel-app/public/index.php を移動
├─ .htaccess ← `public/.htaccess` も移動
├─ asset/ など静的ファイル
なぜ ファイル移動するのか
「index.php
が適切に配置されているか」が、Laravel アプリ公開のポイントとなります。
Laravel アプリでは、外部からアクセスされるエントリーポイントは基本的に public/index.php
だけです。このファイルを通して全てのリクエストがアプリケーション内部にルーティングされる仕組みになっています。
そのため、index.php
と .htaccess
を正しい位置に置いて適切に設定するだけで、Laravel アプリ全体が機能するようになります。
Laravel のその他のファイル(app、routes、resources など)は Web 上から直接アクセスされるものではなく、PHP の実行プロセスの中で読み込まれるため、public_html/xxx.jp/
直下に配置する必要はありません。
index.php の修正例
以下のような修正をします。その際、index.php の位置からの相対パスになるよう設定します。
// 移動前
- require __DIR__.'/../vendor/autoload.php';
- $app = require_once __DIR__.'/../bootstrap/app.php';
// 移動後
+ require __DIR__.'/../../vendor/autoload.php';
+ $app = require_once __DIR__.'/../../bootstrap/app.php';
.env
ファイルの管理について
(補足).env
ファイルは Laravel の設定情報(データベース接続やAPPキーなど)を管理する重要なファイルです。Web 上からアクセスされるべきではないため、必ず laravel-app/ フォルダ内に配置しましょう。
この .env
ファイルは public_html の外側(非公開領域)に置くことで、安全性を確保できます。
おまけ:困ったときに見るログ
困ったときは以下のログファイルを見ると原因究明の一助になると思います。
- Apacheログ:
/home/ユーザー名/logs/xxx.jp/error_log
- PHPエラー:
/home/ユーザー名/logs/php_error_log
まとめ
- お名前.comレンタルサーバーでは、public_html/ドメイン名/フォルダが自動生成される
- Webアプリの
public/
配下ファイルを、このフォルダ内に移動しないと表示されない -
index.php
内のパスも忘れずに修正する
おわりに
今回ご紹介したディレクトリ構成の落とし穴は、私自身がWebアプリを初めてレンタルサーバーに公開した際にハマったポイントです。「ファイルはアップしたのに表示されない」「publicディレクトリが無視される」といった症状がある方は、本記事の手順をぜひ参考にしてみてください。この記事が、同じ問題で悩んでいる方のヒントになれば幸いです。
参考リンク
株式会社ONE WEDGE
【Serverlessで世の中をもっと楽しく】
ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
Discussion