自分のホームページを公開する場合には、サーバーを借りて public_html フォルダにデータを入れていきます。
しかし、多くのレンタルサーバーでファイルマネージャーで「public_html」を開いてみると、いくつものフォルダが並んでいることがあります。
通常、ドメイン名が割り当てられています。
このようなレンタルサーバーでは、どのようにサイトが保存されているのでしょう。
注記:ほとんどの典型的なレンタルサーバーで当てはまりますが、厳密ではない部分があります。
1. サーバー内のpublic_html
「サーバー」とは、インターネットに接続された状態で24時間稼働しているコンピューターのことです。
自分のパソコンにファイルを置くだけでは外部からアクセスできないため、エックスサーバー・ロリポップ・さくらインターネットなどの「レンタルサーバー会社」から借りるわけです。
レンタルサーバーには、インターネット上で公開するファイルを置くためのフォルダが用意されています。
多くのサーバーではそのフォルダの名前が public_htmlです(ほかに www、htdocs などの場合もあります)。
このフォルダに、など、サイトを表示するためのファイルをアップロードします。
public_html/
├── index.html
├── about/
│ └── index.html
└── blog/
├── index.html
└── post1.html
同じサイト内にコンテンツを増やしたい場合には、サブディレクトリを作るのが楽です。
「ディレクトリ」とは、パソコンでの「フォルダ」のことと同等です。
1.1. ドメインとサーバーの関係
しかし、レンタルサーバーにサイトのデータを保存してあるだけでは、外部の人からはどこにあるのかわかりません。
そこで、インターネット上の「わかりやすいアドレス」を設定するために、
ドメインという「看板」とサーバー内のフォルダという「容器」をつなげる必要があります。
ドメインは、URLの先頭部分で、サイトを区別するための「看板」です。
通常 ドメインは、ドメインレジストラに契約して取得します。
いわば、「ドメイン屋さん」です。
借りているサーバーがあれば、ドメインレジストラのDNSに、そのIPアドレスを登録します。
そうすれば、インターネット上のさまざまなサーバーに自分の借りたサーバーへの経路が伝わります。
public_html/index.html→https://example.com/public_html/→about/index.htmlhttps://example.com/about/
1.2. ホームページ作成サービスの場合(クラウド型CMS)
ちなみに、ホームページを公開する方法は、レンタルサーバーだけではありません。
Jimdo, Wix, ペライチ, Canva.siteのように、サーバーの設定を自分で行わずに、ブラウザ上でそのままウェブサイトを作成・公開できるサービスがあります。
このようなホームページ作成サービスを「クラウド型CMS(Cloud-based CMS)」といいます。
ウェブサイトの「作成・保存・公開」のすべてをクラウド上で完結させる仕組みです。
ユーザーは自分でレンタルサーバーを契約したり、ファイルをアップロードしたりする必要がありません。
初期設定では、username.jimdo.com、 username.jimdo.com のようなサービス会社のサブドメインで公開します。
有料プランにすれば独自ドメインを契約することもできるのが通例です。
つまり、「クラウド型CMS」は、サーバー・ドメイン管理・サイト作成ツールの3つがセットで提供されていて、レンタルサーバーやドメインを自分で契約しなくてもよいわけです。
ただし、このような「クラウド型CMS」では、サイトはJimdoやCanvaなどのサービス側で編集し、直接 public_html のような内部フォルダを自由に作ることはできません。
既存の独自ドメインに接続することはできますが、(やや専門的な)ドメイン接続の設定が必要になります。
2. 同じサーバー内に複数のサイトがある場合
多くのレンタルサーバーでは、複数のサイトを追加できます。
ひとつのサーバーの中に、複数の独立したサイトが共存しているという構造は、よくあります。
たとえば、ファイルマネージャーを開くと、public_htmlというフォルダの中に次のような構成があったとします。
public_html/
├── corporate-example.com/
└── shop-example.net/
このとき実際にブラウザでそれぞれのURLを開いてみて、サイトが表示されるか確認できます。
それぞれのドメインを取得・設定してあれば、
たとえば、corporate-example.comを開くとcorporate-example.comフォルダ内のindex.htmlが表示され、
同様に shop-example.comではそのフォルダ内のページが開くはずです。
つまり、サーバー内のフォルダとドメインが1対1で対応しているわけです。
2.1. 複数のサイトを振り分ける仕組み(DNSレコード)
ちなみに、複数のサイトを持っている場合は、別々のドメインでも同じサーバーのIPアドレスに誘導されます。
その場合は、どのように表示されるサイトを区別するのでしょう?
これは、レンタルサーバー側の「DNSレコード」で区別しています。
たとえば example.com でアクセスされたら「example.com」フォルダの中身を表示し、 shop-example.net でアクセスされたら「shop-example.net」フォルダの中身を表示するように、
ユーザーのアクセスしたドメインを対応する内部フォルダを紐づけます。
このようにすることで、外部のユーザーが、ブラウザでドメインにアクセスすると、レンタルサーバーの中身が表示されます。
これが、複数サイトを動かす基本の仕組みです。
3. WordPressとHTMLファイルは共存可能
WordPressをインストールしたサイトでは、通常のHTMLファイルを追加できるの?
WordPressをインストールしていても、同じドメイン内で普通のHTMLファイルやフォルダを置くことができます。
WordPressは、レンタルサーバーに自分でインストールするWebアプリケーション(CMS:コンテンツ管理システム)です。
といっても、サーバー設定から簡単な設定だけで追加できます。
大事なポイントは、「WordPressサイト」と言っても、
サーバーそのものがWordPressになるわけではないことです。
WordPressはサーバーの中でPHPを使って動くひとつのプログラムで、サーバー全体を占有しているわけではありません。
たとえば、次のような構成にすれば、WordPressとは別に サブディレクトリ landing-page 内に静的ページを追加できます。
public_html/
├── example.com/
│ ├── index.php ← WordPressの入口(フロントページ)
│ ├── wp-content/
│ ├── wp-admin/
│ ├── wp-includes/
│ └── landing-page/
│ └── index.html ← 通常のHTMLファイル
WordPressのindex.phpは、「ウェブページを動的に生成する入口」になっているだけなので、
別のフォルダにHTMLを置けば、WordPressとは無関係に表示されるのです。
3.1. 動的サイトと静的サイトが共存する仕組み(URLルーティング)
HTMLファイルを設置したフォルダ(静的ページ)と、WordPressで作った固定ページ(動的ページ)が同じアドレスになる場合はどうなるの?
その場合は、静的ページが優先されます。
ブラウザが https://example.com/news/ にアクセスしたとき、
一般的なサーバーは次の順序でファイルを探します(Apacheの場合):
/フォルダを探すnews/- 存在すれば、その中の
index.htmlまたはindex.phpを探す
どちらもなければ、通常はサーバーは「404 Not Found」を返します。
しかし、WordPressサイトでは、このときに index.phpに転送するルールが設定されています。
ルール(.htaccess)の記述例:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Code language: HTML, XML (xml)
このルールのうち以下の部分が「アクセスされたURLに対応するファイル(!-f)やディレクトリ(!-d)が存在しなければ、WordPressのindex.phpに処理を渡す」という部分です。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
アクセス時の流れを簡単に言うと:
- ブラウザがURLにアクセスする
- サーバーが該当するファイルを探す
index.htmlやindex.phpがあればそれを実行・表示する(静的サイト)- なければ、WordPressの
index.phpが起動し、
データベースから記事を取得してHTMLを生成する(動的サイト)
つまた、存在しないURLはすべて WordPressの本体である index.phpに送られ処理されます。
これが、WordPressが「動的URL(パーマリンク)」を自由に扱える秘密です。
3.2. サブディレクトリにWordPressをインストールする
ちなみに、サブディレクトリにWordPressの構成ファイルやデータベースをインストールすることもできます。
そうすれば、メインサイトの「中に」、別の独立したWordPressサイトを作れます。
たとえば、既存のホームページがあるときに、ブログだけを追加したいようなときには、 blog フォルダを作り、WordPressのインストール先を example.com/blog/ などにするのが一般的です。
既存のサイトはそのままで、ブログを追加できるのです。
4. まとめ:構造を理解すると管理が楽になる
最初はただのフォルダの並びにしか見えなかったpublic_htmlの中身が、今ではそれぞれのサイトの“家”に見えるようになりました。どのドメインがどのフォルダを指しているかを理解しておくと、トラブル時の原因特定も早くなりますし、無駄なファイルを消すときにも安心です。