Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
60 lines (38 sloc) 3.65 KB
layout page_type page_datetime page_id page_tag page_cover page_description page_title
./src/html/post.pug
post
2019-10-28T16:22:07
104
Netlify
つまりNetlifyサイトから別のサイトへリダイレクトする
カスタムドメインを紐付けたNetlifyサイトとは別のNetlifyサイトを、同じカスタムドメイン配下のディレクトリにリダイレクトする

ややこしい。

リポジトリAをNetlifyにサイト登録し、dskd.jpというカスタムドメインを設定している。これをサイトAとする。

リポジトリBをNetlifyにサイト登録し、netlifyサブドメインを編集し、demo-dskd.netlify.comとしておく。これをサイトBとする。サイトBではカスタムドメインは設定しない。

このサイトBをサイトA配下のディレクトリ、例えば dskd.jp/demo/ でアクセスできるようにしたい、と言う話。

こういうのなんて言ったらいいんだろう? やりたい人は「Netlify 別サイト 同じドメイン ディレクトリ リダイレクト」とかでググると思うので、それが全部入りな感じの説明文を作っていたらこの表題になった。

結論から言うと、サイトAのドキュメントルート_redirects という名前のファイルを置き、中身の次のように書けば良い。

/demo/*	https://demo-dskd.netlify.com/:splat	301!

最初に書いている /demo/* はサイトAにおけるファイルパス。なので dskd.jp/demo/ にアクセスしたら〜と言う意味になる。

次に書いているのはリダイレクト先のアドレスだ。ここはサイトBのアドレスとなる。

:splat と言う文字列がくっついているが、これは /demo/* のアスタリスク以下の構造を維持してそのまま参照する意味を持つ。

最後にリダイレクトのHTTPステータス301を書いて終了だ。! は強制リダイレクトの意味を持つ。!がない場合は、サイトA側にファイルがあればそれを表示するらしい。(動作未確認)

これで、 dskd.jp/demo/ にアクセスがあったら demo-dskd.netlify.com/ のファイルが参照されるようにできた。

この参照先のサイトBは、もちろんNetlifyのサイトでなくても良い。最初にググった時にNetlify同士の特有な設定があるかもしれないと期待してしまい、決着に時間がかかった。Netlifyは1つのサイトに複数のリポジトリを紐づけるような設定はできないので、ただリダイレクト処理を書けばいいだけだった。

1つ注意点がある。参照元(サイトA)と参照先(サイトB)のファイルパスが違うと、当たり前だが画像やCSSのリソースファイルが正しく読み込まれない場合がある。サイトBのリソースを相対パスにするか、サイトAにファイルパスを合わせてビルドしよう。後者の場合、さっきの _redirects ファイルは次のようになる。

/demo/*	https://demo-dskd.netlify.com/demo/:splat	301!

~com/:splat~com/demo/:splat に変更した。簡単!


_redirects ではなく netlify.tomlを使うやり方もあるが、今回は試していない。

いやーそれにしても本当にNetlify便利ですな。これが無料でいいんだろうか……。

参考:

You can’t perform that action at this time.