例えばexample.com
という URL を持っていたとして、
example.com/subdir
というサブディレクトリの URL にデプロイしたいときに
どうすればいいのかというお話です。
Netlify での場合を説明しています。
サイトを2つデプロイする
ここでは例としてexample.com/subdir
という URL にデプロイをしていくことを考えます。
まずはexample.com
のサイトとexample.com/subdir
にする予定のサイトのデプロイを完了させます。
この時点ではexample.com/subdir
にする予定のサイトの URL は別のもの、
例えばmarvellous-sheep.netlify.app
のようになっていると思います。
これは変更してもいいですし、そのままにしておいても構いません。
リダイレクトを設定する
次に、example.com
のサイトのルートディレクトリにnetlify.toml
を作成し、
次のように記述します。
netlify.toml1[[redirects]]2from = "/static/*"3to = "https://marvellous-sheep.netlify.com/static/:splat"4status = 2005force = true67[[redirects]]8from = "/subdir"9to = "https://marvellous-sheep.netlify.com"10status = 20011force = true
200 リダイレクトによって、
アドレスバーの URL の表示を変更させることなく目的のサイトに飛ばすことができ、
見た目上はサブディレクトリにそのサイトが配置される形になります。
Netlify では 200 リダイレクトを rewrite としてくれるのですが、
他のサービスだと rewrite を設定する必要がありそうです。
7-11 行目は、example.com/subdir
にアクセスがあると、
https://marvellous-sheep.netlify.com
に 200 リダイレクトするという意味になります。
サイトだけリダイレクトしても、CSS や画像のパスがおかしくなって表示されないので、
1-5 行目でexample.com/subdir/static
以下にあるすべてのファイルを
https://marvellous-sheep.netlify.com/static
以下に移しています。
:splat
というのは*
(ワイルドカード)の部分を展開しているので、
例えばexample.com/subdir/static/app.css
は
https://marvellous-sheep.netlify.com/static/app.css
に、
example.com/subdir/static/images/image1.png
は
https://marvellous-sheep.netlify.com/static/images/image1.png
に移ります。
これでリソースの読み込みも正常に行われます。
ユースケース
例えば、example.com/works/react
には React 製のサイトを、
example.com/works/gatsby
には Gatsby 製のサイトを、
example.com/works/hugo
には Hugo 製のサイトを置く、
というようなことができるようになります。
とはいえ、そう見えているだけであって、実際には他の URL が存在しているので、
管理はサイトごとに行うことになります。
ドメインを追加購入しているわけでもないので、無料でできます。
お役に立てれば幸いです。
では