背景・課題
Xserverでは、ドメインごとに公開ルート(document root)を任意のディレクトリに変更できません。
そのため public_html 直下にさまざまなファイルやディレクトリが蓄積され、以下の問題が発生します。
- どれが実際のサイトデータか判別しにくい
- リニューアル時の切り替えや整理が困難
- 誤って別用途のファイルを操作するリスクがある
解決策の概要
サイト本体をサブディレクトリに配置し、.htaccess で内部的にマッピングすることで、URLはそのままに実体ファイルだけを任意のディレクトリに集約できます。
ディレクトリ構成例
/public_html/
├─ .htaccess
├─ tools/
├─ dev-tools/
└─ act3inc.com/
├─ index.php
├─ assets/
└─ ...
- アクセスURL:
https://act3inc.com/ - 実体パス:
/public_html/act3inc.com/
実装方法(.htaccess)
RewriteEngine On
RewriteRule ^$ act3inc.com/ [L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteCond %{REQUEST_URI} !^/act3inc\.com/
RewriteRule ^(.*)$ act3inc.com/$1 [L]
サブディレクトリ運用時のURL正規化
この構成では、設定や参照方法によって意図しないURLが生成される可能性があります。
例えば https://act3inc.com/act3inc.com/contact/ のような冗長なURLでアクセスされると、同一内容が別URLで表示されてしまい、SEO・運用の両面で好ましくありません。
対応内容
今回の実装では以下の対策を実施しました。
301リダイレクトによる正規化
/act3inc.com/〇〇 の形式でアクセスされた場合、/〇〇 に301リダイレクトします。
- 例:
https://act3inc.com/act3inc.com/contact/→https://act3inc.com/contact/
canonical タグの調整
出力する canonical タグでは、/act3inc.com を含まない正規URLのみを出力するよう調整しました。
実装時の注意点
- リダイレクト規則は、HTTPS強制・www統一などの転送処理の後、内部リライトの前に記述することで、ループや想定外の挙動を回避できます
- 301リダイレクトを設定していても、外部リンク・キャッシュ・計測タグなどの影響で重複URLが一時的に発生する可能性があるため、canonical との併用は必須です
まとめ
Xserverの制約を理由にディレクトリ構成を諦める必要はありません。
.htaccess を使えばURLはルートのまま、実体は自由なディレクトリに配置できます。