サブディレクトリ公開でCSSパスが崩れる時の確認手順
トップページではCSSが効くのに、下層ページやサブディレクトリのページだけ崩れる時は、CSSの書き方そのものより先に「そのページがどこからCSSを探しているか」を確認します。
特にロリポップでは、独自ドメインの公開フォルダ名がURLに出ない場合と、/test/ や /lp/ のようにURLへサブディレクトリ名が出る場合があります。この2つを混ぜると、/assets/css/style.css が正解にも不正解にもなります。
確認日と対象
確認日: 2026年6月12日。ロリポップでHTML/CSS/PHPサイトをFTPまたはSFTPで公開し、下層ページ、サブディレクトリ、テスト用フォルダ、LPフォルダだけCSSや画像が崩れる初心者向けです。
WordPressテーマ、ビルドツール、フレームワークのルーティング設定は対象外です。まず、公開URL、公開フォルダ、CSSファイルのURL、link タグの基準点を分けるための記事として使ってください。
作成方針: このページは、実サイト運用と公開前後の確認をもとに整理しています。構成整理にはAIを補助的に使うことがありますが、危険操作、秘密情報、対象範囲、関連リンクは公開前に確認しています。
先に結論
サブディレクトリでCSSが崩れる時は、すぐ全ページのパスを置換しないでください。先に、公開URLにサブディレクトリ名が出る構成かどうかを分けます。
| 公開URLの形 | CSS指定の考え方 | 例 |
|---|---|---|
https://example.com/page.php |
サイトの根元から指定するルート相対パスが使いやすい | /assets/css/style.css |
https://example.com/test/page.php |
URL上の /test も含めて指定する |
/test/assets/css/style.css |
独自ドメインの公開フォルダが /test だがURLはルート表示 |
公開フォルダ名はURLに出ないため、URL側の根元から指定する | /assets/css/style.css |
このページで整理できること
- トップではCSSが効くのに、下層ページだけ崩れる原因を分ける
- 相対パス、ルート相対パス、絶対URLのどれを使うべきか判断する
- ロリポップの公開フォルダ名と、ブラウザに出るURLの違いを分ける
- CSS、画像、JavaScript、SVG図解が404/403/200のどれになっているか確認する
- AIや制作会社へ相談する時に、伏せる情報と伝える情報を分ける
最初に分けること
CSSが崩れている時は、ブラウザキャッシュ、CSSの記述ミス、パス違い、アップロード先違いが混ざりやすいです。まず「どのページでだけ崩れるか」を分けます。
| 見えている状態 | 最初に疑うこと | 次に見る場所 |
|---|---|---|
| トップページは正常で、下層ページだけCSSが崩れる | 相対パスが下層ページ基準になっている | link href、NetworkのCSS URL、/assets/... かどうか |
/test/ や /lp/ 配下だけ崩れる |
ルート相対パスがドメイン直下を見に行っている | 実際のCSS URLが /test/assets/... なのか /assets/... なのか |
| CSSの直接URLが404 | パス違い、アップロード先違い、ファイル名違い | FTP右側の場所、公開フォルダ、ファイル名の大文字小文字 |
| CSSの直接URLは200だが、ページだけ崩れる | ページが別のCSSを読んでいる、CSS記述ミス、読み込み順 | ページHTMLの link、Network、CSSの閉じ括弧 |
| PCは正常でスマホだけ崩れる | メディアクエリ、スマホ用CSS、キャッシュ | スマホだけ古い表示の確認 |
サブディレクトリではCSSを探す基準点が変わる
相対パスは今開いているページから探し、ルート相対パスはドメインの根元から探します。ただし、URLに /test/ が出るサイトでは、そのURL上の置き場所も含めて考えます。
すぐ一括置換しない
原因が分からないまま assets/ を全部 /assets/ に置換すると、https://example.com/test/ 配下で公開しているサイトでは逆に壊れることがあります。
- 本番URLにサブディレクトリ名が出るか確認する
- CSSの直接URLを開き、404/403/200を確認する
- 1ページだけ直してから、他のページへ広げる
- AIにFTP情報、管理画面URL、DB情報を貼らない
.htaccessやリダイレクトで無理に隠そうとしない
1. CSSの直接URLを確認する
まず、ページが読み込もうとしているCSS URLを直接開きます。ブラウザの開発者ツールでNetworkを開き、style.css のURLとステータスを見ます。
| CSS URLの状態 | 意味 | 次の確認 |
|---|---|---|
200 |
CSSファイル自体は取得できている | CSSの中身、読み込み順、キャッシュ、セレクタを確認 |
404 |
指定した場所にCSSがない | パス、公開フォルダ、FTP上の置き場所を確認 |
403 |
存在するが見せられていない可能性 | パーミッション、.htaccess、直リンク制限を確認 |
2. 相対パスがどこを見ているか確認する
assets/css/style.css のような相対パスは、今開いているページの階層から見た場所になります。下層ページで使うと、存在しない場所を見に行くことがあります。
<!-- 下層ページでは壊れやすい例 -->
<link rel="stylesheet" href="assets/css/style.css">
ページURL:
https://example.com/templates/lolipop/page.php
ブラウザが探すCSS:
https://example.com/templates/lolipop/assets/css/style.css
3. 公開URLにサブディレクトリ名が出るか確認する
ルート相対パスは便利ですが、サイトを本当に /test/ や /lp/ の下で公開している場合は、先頭の / がドメイン直下を指します。
| 公開の形 | CSS指定の例 | 注意 |
|---|---|---|
| ドメイン直下で公開 | <link rel="stylesheet" href="/assets/css/style.css"> |
下層ページでも同じCSSを見に行ける |
/test/ の下で公開 |
<link rel="stylesheet" href="/test/assets/css/style.css"> |
/assets/... だとドメイン直下を見てしまう |
独自ドメインの公開フォルダが /test |
<link rel="stylesheet" href="/assets/css/style.css"> |
URLが https://example.com/ なら公開フォルダ名はURLに出ない |
4. サブディレクトリ公開用の基準パスを決める
/test/ や /lp/ 配下でサイトを見せ続けるなら、基準パスを1つ決めておくと、CSS、画像、JavaScriptの指定をそろえやすくなります。
<?php
$base_path = '/test';
?>
<link rel="stylesheet" href="<?= $base_path ?>/assets/css/style.css">
<script src="<?= $base_path ?>/assets/js/app.js" defer></script>
<img src="<?= $base_path ?>/assets/images/main.jpg" alt="">
ドメイン直下へ移す予定があるなら、移動時に $base_path = ''; へ変えるだけで済むようにしておくと、修正範囲を小さくできます。
5. 公開フォルダとURLの違いを見る
FTP上の場所とブラウザのURLは、同じ文字列になるとは限りません。ロリポップの独自ドメインで公開フォルダを指定している場合、公開フォルダ名はURLに出ないことがあります。
| FTP上の場所 | ブラウザで見るURL | 考え方 |
|---|---|---|
/example/index.php |
https://example.com/ |
公開フォルダ /example はURLに出ない |
/example/assets/css/style.css |
https://example.com/assets/css/style.css |
CSSはURL上では /assets/... になる |
/example/test/assets/css/style.css |
https://example.com/test/assets/css/style.css |
URLに /test が出るならCSSにも必要 |
6. 画像やJavaScriptも同じ考え方で見る
CSSだけでなく、画像、JavaScript、SVG図解、OGP画像も同じように階層で崩れます。ページの階層が深いほど、相対パスはずれやすくなります。
- 共通CSS:
/assets/css/style.cssまたは/test/assets/css/style.css - 共通JS:
/assets/js/app.jsまたは/test/assets/js/app.js - 共通画像:
/assets/images/main.jpgまたは/test/assets/images/main.jpg - ページ固有画像: そのページと同じフォルダに置くなら相対パスでもよい
AIに貼る相談メモ
AIに相談する時は、FTP情報や管理画面情報ではなく、公開URL、CSSの直接URL、link タグ、ファイルの置き場所を整理します。
ロリポップでサブディレクトリのページだけCSSが崩れています。
崩れているページURL:
例: https://example.com/test/page.php
正常に見えるページURL:
例: https://example.com/
CSSのlinkタグ:
例: <link rel="stylesheet" href="assets/css/style.css">
ブラウザが実際に読み込もうとしているCSS URL:
例: https://example.com/test/assets/css/style.css
CSSの直接URLを開いた結果:
例: 200 / 404 / 403 / 古いCSSが出る
ロリポップの公開フォルダ:
例: /example
FTP上のCSSの場所:
例: /example/test/assets/css/style.css
公開URLにサブディレクトリ名が出るか:
例: 出る / 出ない / 分からない
伏せている情報:
FTPホスト、FTPユーザー名、FTPパスワード、管理画面URL、DB接続情報、個人情報
相対パス、ルート相対パス、公開フォルダ、URL上のサブディレクトリのどこが原因か、次に確認する順番を教えてください。
制作会社やサーバー会社へ聞く時の文面
自分で判断しきれない時は、接続情報ではなく、URLと確認結果だけを伝えます。入力しながら整理したい場合は、問い合わせ文メーカーや公開フォルダ・アップロード先確認メモメーカーを使います。
サブディレクトリ配下のページだけCSSが崩れる件で確認したいです。
崩れているURL:
https://example.com/test/page.php
正常に見えるURL:
https://example.com/
CSSの直接URL:
https://example.com/test/assets/css/style.css
確認結果:
- CSSの直接URLは 200 / 404 / 403 でした
- ページ内のlinkタグは次の指定でした:
- ロリポップ側の公開フォルダは次の設定です:
- FTP上のCSSの場所は次の場所です:
確認したいこと:
公開URLに出るサブディレクトリ名と、FTP上の公開フォルダ・CSSの置き場所が合っているか確認したいです。
FTPパスワード、DB接続情報、管理画面ログイン情報は記載していません。
公式情報で確認するところ
公開フォルダやアップロード済みファイルの見え方は、サーバー側の設定に関わります。画面名や仕様が変わる可能性があるため、最後はロリポップ公式情報でも確認してください。
| 確認したいこと | 公式情報 | この記事での使い方 |
|---|---|---|
| 公開フォルダの意味 | ロリポップ公式 公開フォルダとは | FTP上のフォルダ名と、URLに出るパスを分ける時に使います。 |
| アップロード後に表示・更新されない | ロリポップ公式 アップロード済みファイルが表示・更新されない | URL違い、ファイル名違い、キャッシュ、DNSなど、CSS以外の原因も確認します。 |
| FTPソフトの設定 | ロリポップ公式 各種FTPソフトの設定方法 | FileZillaやWinSCPで、右側のフォルダとアップロード先を確認する時に使います。 |