GitHub HexoブログGitHub Pages個人サイトマルチドメインバインドの問題

5952 ワード

ブログ


詳しくは私のブログの原文を参照して、原文のリンク

問題の説明


私の個人サイトはGitHubに管理されていて、複数のドメイン名が正常にサイトにアクセスできるようにしたいです.例えばyunhao.スペースはサイトにアクセスできますblog.yunhao.スペースはサイトにもアクセスできます.振り回されたことを記録する.設定中にキャッシュがあるので、バーの場合、本当にアクセスできるとは限らないので、再三確認しなければなりません.

GitHub Pages


GitHub Pagesは、プロジェクトをサイトに設定する機能を提供しています.特定のサイトからアクセスできます.GitHub Pagesサイトには2種類あり、第1のクラスはユーザー組織サイトであり、第2のクラスはプロジェクトサイトである.第1クラスのサイトの倉庫名はユーザー名と同じでなければなりません.第2クラスのサイトの倉庫名は自由にできます.第1クラスサイトへのアクセスはusername.github.ioであり、第2クラスサイトへのアクセスはusername.github.io/repository_nameである.公式には、ユーザーがサイトを組織し、アカウントごとに1つしかありませんが、プロジェクトサイトはプロジェクトごとに無限です.詳細については、公式ドキュメントの個人サイトがユーザーサイトです.

マルチドメイン名バインドの公式解釈


Multiple domains in CNAME file、これは公式の解釈です.
A CNAME file can contain only one domain. To point multiple domains to the same Page, set up redirects through your DNS provider.
公式にはgithub上のCNAMEファイルにはドメイン名が1つしかないと言われています.私たちは別の方法を探さなければならない.

301リダイレクト


そこで301リダイレクトを考えました.なぜリダイレクトしなければならないのですか?リダイレクトでは、ブラウザのアドレスバーでurlを変更できます.dnsでCNAME解析をするだけではアドレスバーにurlを修正させることはできません.GitHubの404が見えます誰かが言ったように、私たちは自分で404を定義することができます.htmlは、パーソナルサイトのルートディレクトリの下に置く、404.htmlの中でjsのwindowを使います.location.hrefリダイレクトすればいいんじゃない?これは失敗します.この404のエラーは、githubがあなたの個人サイトのルートディレクトリを見つけられないためです.新聞の404は、githubがどのプロジェクトにアクセスしたいか分からないということです.個人サイトのルートディレクトリの下に404を置く.htmlは、このディレクトリの下にファイルが見つからないなどの問題を解決するだけで、表示404.htmlの内容.だから、上のようなやり方は失敗します.

サーバリダイレクト


ここではNginxサーバを例に挙げます.ドメイン名をblog.yunhao.space 301はyunhaoにリダイレクトする.spaceでは、nginxのサーバを以下のように構成する:私のサーバはUbuntu 16である.04,nginxはapt-getでインストールされています.
cd /etc/nginx/sites-available
vim redirection.conf

新しいredirection.confの後、ファイルに次のように書きます.
server {
        server_name blog.yunhao.space;
        rewrite ^(.*)$ http://yunhao.space$1 permanent;
}

保存終了後、nginxサービスを再起動します
cd /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/redirection.conf redirection
systemctl stop nginx.service
systemctl start nginx.service

dnsはA解析を追加して、blog.yunhao.spaceはサーバーのIPアドレスに解析して、もしできないならば、ドメイン名の解析の配置のチュートリアルを参考にしてそれからしばらく待って、テストして、成功しました.この方法は最も直接的で、最も正常で、私はこの方法を採用しています.nginxの起動を設定してください.そうしないと、再起動してからサービスが提供されません.

GitHubマルチプロジェクトリダイレクト


この方法はGitHub Pagesの特性から取った.*プロジェクトサイトには独自のドメイン名があり、必ずしも / でアクセスする必要はありません.
説明すると、例えば個人サイトドメイン名がyunhao.spaceで、githubにはプロジェクトサイトがあり、プロジェクト名がtestである場合、GitHub Pagesが構成されている場合、yunhao.space/testでアクセスできます.これは公式文書で説明されています.実はGitHub Pagesのプロジェクトサイトのドメイン名のバインドは公式に言ったよりも強くて、つまりあなたの個人サイトのバインドドメイン名はyunhao.spaceですが、プロジェクトサイトはtest.yunhao.space、さらにはtest.yunhao.lifeをバインドすることができて、トップドメイン名はすべて異なっています.上記の特性を使用するには、dns解析とgithub倉庫のCNAMEファイルが対応していることに注意する必要があります.2つ目はgithub倉庫がGitHub Pagesサービスを開始したことです.次に、複数のプロジェクトサイトを介してリダイレクトする方法について説明します.この例はちょうど上のGitHub Pagesの特性を反映することができる.例えば今、私のyunhao.spaceはすでに個人サイトを縛っています.test.yunhao.lifeというドメイン名も私の個人サイトを指したいと思っています.まず、dnsはCNAME解析を追加し、test.yunhao.lifelmnsyunhao.github.ioに解析します.できない場合は、ドメイン名解析構成チュートリアルを参照してgithubにtestなどの倉庫を新規作成します.そしてcloneを降ります.そして、test倉庫にCNAMEファイルを置いて、test.yunhao.lifeと書きます.それから、test倉庫に404を入れます.htmlのファイル.ファイルにjsでリダイレクトします.domain変数内にリダイレクトしたいドメイン名を設定することに注意してください.
<script>
var domain = "yunhao.space";
var src = window.location.href;
var prtc = src.substring(0, src.indexOf(':'));
var target = src.substring(src.indexOf('/', src.indexOf(':') + 3));
window.location.href = prtc + "://" + domain + target;
script>

次に、add、commit、github上のmasterブランチにファイルを追加します.その後、testプロジェクトのGitHub Pagesサービスを開始します.次のようにsettingsをクリックし、下にスクロールしてGitHub Pagesに行き、masterを選択して保存します.ちょっと待って、それからテストして、指向できるはずです.

ドメイン名登録者リダイレクト


GoDaddy、テンセントクラウドなど、ドメイン名登録業者がリダイレクトサービスを提供しています.テンセント雲のリダイレクトは、以下の図のように、顕性URLタイプは301リダイレクトサービスですが、皆さんも上の弾窓から見て、いくつかの制限があります.そこで、GoDaddyでリダイレクトサービスを見つけました.私のドメイン名はGoDaddyで買ったからです.だから私は直接設定しました.見てみると、GoDaddyの上には他のドメイン名登録業者が登録しているドメイン名を引き継ぐことができないようです.もしあなたがGoDaddyが買ったドメイン名なら、おめでとうございます.この方法は、見てみてください.そうしないと、自分のドメイン名登録者がリダイレクトサービスを提供しているかどうかを見なければなりません.まずGoDaddyにログインし、私の製品をクリックします.例えば、yunhao.lifeyunhao.spaceにリダイレクトし、DNSをクリックします.ドメイン名サービスがGoDaddyで管理されていない場合は、まず次のドメイン名サーバーをクリックし、デフォルトに変更してから、更新が終わってから続けます.このような状況が発生しなかったら、下を見続けます.転居先を見つけます.上位ドメイン名アドレスは、yunhao.lifeからyunhao.spaceに移行するように処理され、サブドメイン名アドレスはblog.yunhao.lifeからyunhao.spaceに移行し、2級ドメイン名が空であるかどうかを区別する.次に、yunhao.lifeからyunhao.spaceにサブドメイン名を設定したい場合は、blog.yunhao.lifeからyunhao.spaceに変更します.以下のように、設定が完了し、しばらく待ってから有効になります.私は30分以上待った.このドメイン名登録者が提供するアドレス転送サービスは必ずしも速くない.例えばGoDaddyこれは確かに回転できます.でもスピードがちょっと遅いです.また、yunhao.life/hello.htmlからyunhao.space/hello.htmlへの移行はサポートされていないようです.