動作しない短縮リンクは、4つのうちいずれかの形で失敗しており、それらは互いに何の関係もない。curl -sIを実行すれば、最初の行でどちらに当てはまるかがわかる:
curl -sI https://s.elido.me/ab12cd
Locationヘッダーを伴う301は、リンクが健全で問題がその先にあることを意味する。404は、スラッグが間違っている、削除された、あるいは大文字小文字が違うことを意味する。HTTPさえ発生する前のTLSエラーは、ドメインの設定が完了していないことを意味する。そして警告ページを表示する200は、自分とリンクの間にある何かがそれを許可しないと判断したことを意味する。
ターミナルでの10秒は、1時間の当て推量に勝る。ブラウザはこの4つすべてを、同じ役に立たないエラーページへとまとめてしまうからだ。本稿ではそれぞれの原因と修正方法を順に見ていく。
短縮ドメインからの404
ドメインは応答している。つまりDNSとTLSは問題ない。問題はスラッグにある。
まず大文字小文字を確認しよう。ほとんどのシャートナーはスラッグを大文字小文字で区別するため、/Springと/springは別の2つのリンクであり、そのうち一方しか存在しない。リンクが印刷されたチラシから来たものなら、サンセリフ体で見分けがつきにくい文字を疑うこと。大文字のI、小文字のl、数字の1。あるいは大文字のOとゼロ。これこそが、ランダムな文字列ではなく実在する単語で構成されたカスタムバックハーフを使うべき最大の理由だ。
スラッグが正しければ、そのリンクが削除またはアーカイブされていないか、また有効期限が設定されていないか確認しよう。リンクの有効期限と自己消滅リンクでは、予定された有効期限が発動した際の挙動を解説している。リンクは解決しなくなり、アクセスした人にはまさにタイプミスのように見えてしまう。
以前は動作していたリンクについては、もう1つ可能性がある。テストしている場所を除外する地域ルールやデバイスルールだ。スマートリンクは国やデバイスによって振り分けを行うが、フォールバックのないルールは、そのリストに含まれない全員にとって404になってしまう。
カスタムドメインでの証明書警告
ここではHTTPは何一つ発生していない。ブラウザはTLSハンドシェイクの段階で拒否しており、これはドメインが証明書の発行前に配信を始めてしまっていることを意味する。
ほぼすべてのケースは2つの原因でカバーできる。DNSレコードは追加されたが検証が完了せず、証明書が発行されなかった場合。あるいは、プロバイダーがCNAMEを求めたにもかかわらずAレコードでドメインを向けてしまい、所有権を証明するチャレンジが完了できない場合だ。
修正方法は、ダッシュボードが指定するとおりに正確にレコードを設定し、あとは待つことだ。伝播にかかる時間は、以前そこにあったレコードのTTLに依存するため、以前1時間のTTLを持っていたレコードは、反映されるまで最大1時間ほどかかる。短縮リンクのカスタムドメインではDNSとTLSの全手順を解説しており、5分でできるカスタムドメインTLSでは順調な場合の流れを扱っている。
ブラウザでは動作するのにアプリでは動作しない
ターミナルからはそのリンクは完璧に解決するのに、Slack、Teams、WhatsApp、あるいはメールゲートウェイでは、削除されたり、フラグを立てられたり、黙って落とされたりする。
それはあなたのリンクの問題ではない。ドメインの評判の問題だ。無料の公開シャートナードメインは、それを使うすべての人と共有されている。今朝そのドメイン上で行われたフィッシングキャンペーンも含めてだ。そして、これらのアプリにブロックリストを提供しているセキュリティベンダーは、スラッグ単位ではなくドメイン単位で判定している。
共有ドメイン上でこれを解決する設定は存在しない。解決策は自分自身のドメインを持つことであり、そこでは評判が自分だけのものになり、無作為に崩れるのではなく積み上がっていく。短縮リンクがSlackやTeamsでブロックされる理由では、そのメカニズムの全体像に加え、自分のドメインが実際にフラグを立てられてしまった場合の対処法も解説している。
メールにはさらにもう1つの層が加わる。一部のセキュリティ製品はメッセージ内のすべてのリンクを書き換えるため、受信者がクリックするのは自分のURLではなく、ベンダーのURLになる。短縮リンクはメールの到達率を損なうかでは、この相互作用について解説している。
まだ共有ドメインを使っているなら、今が移行すべきタイミングだ。無料プランでブランドドメインを設定し、重要なリンクを再発行しよう。
リダイレクトループと長いチェーン
curl -sIは1ホップしか表示しない。-Lを追加してホップ数を数えてみよう:
curl -sIL https://s.elido.me/ab12cd | grep -E '^HTTP|^[Ll]ocation'
2行か3行なら正常だ:短縮リンクがリダイレクトし、遷移先がさらにhttpからhttpsへ、あるいはapexからwwwへ、もう一度リダイレクトすることもある。大量に並ぶ場合はループを意味し、よくある原因は、その短縮URLへ戻ってリダイレクトするページを遷移先に設定するようリンクが編集されてしまったことだ。遷移先は、別のリダイレクトではなく最終的なページに設定すること。
ブラウザは一定数のホップの後で追跡をやめ、「リダイレクトが多すぎます」という一般的なページを表示する。だからこそターミナルの方が速く診断できる:curlはその途中のすべてのLocationヘッダーを表示するため、どの2つのURLが互いを指し合っているかを正確に確認できる。ステータスコードの意味はRFC 9110で定義されており、実務上重要なのは、恒久的なリダイレクトはブラウザにキャッシュされるということだ。そのため、間違った301は、修正した後もその訪問者にとっては間違ったままであり続ける。
長いチェーンは、たとえ機能していても整理する価値がある。ホップが増えるたびにモバイル回線でのレイテンシが増し、それぞれがクエリ文字列を失う可能性のある箇所となる。これがUTMパラメータがGA4で消える理由の1つでもある。301 vs 302の解説ではどちらのステータスコードをどこで使うべきかを扱っており、リダイレクトの種類ではその他のバリエーションを扱っている。
遷移先そのものが壊れている場合
短縮リンク自体は問題なく、その先にあるページの方に問題があることもある。リダイレクトは301を返し、ブラウザはそれに従うが、キャンペーンページが非公開になったりスラッグが変更されたりしたために、遷移先が404を返す。
これこそが、短縮リンクを持つ価値を実感させてくれる失敗パターンだ。修正が再印刷ではなく、遷移先の付け替えだけで済むからだ。遷移先を変更すれば、印刷物も含め、そのリンクが公開されているすべての場所で再び動作するようになる。リンク切れ防止では、顧客より先にこれらを発見する方法を扱っており、SentryとDatadogによるリダイレクト監視では、規模を問わずアラートを設定する方法を扱っている。
確認すべき順序
常にまずヘッダーから確認すること。curl -sIは、DNSとTLSとHTTPを1行で切り分けてくれ、そのそれぞれに、他の2つとは無関係な固有の修正方法がある。次にスラッグ、次に遷移先、そして最後にその間にあるアプリやゲートウェイを確認する。
他の誰かに見られる前にほとんどの問題を発見できる、たった1つの確認方法がある:新しいリンクは必ず一度、スマートフォンで、オフィスのWi-Fiではなくモバイルデータ回線で開いてみることだ。わずか15秒で済み、まだ発行されていない証明書、フォールバックのない地域ルール、想定外の場所へリダイレクトしてしまう遷移先を発見できる。
コーナーストーン記事を読む
本稿はtutorialsクラスターに属する。基礎となる仕組みについてはURL短縮サービスの仕組みがリダイレクトの経路を扱っており、URL短縮サービスのセキュリティチェックリストがそもそもドメインがブロックされる原因となる悪用の側面を扱っている。
ブログ内の関連記事
よくある質問
なぜ自分の短縮リンクが動作しないのですか。
curl -sIを実行して最初の行を読もう。404はスラッグが間違っているか削除されたことを意味し、TLSエラーはカスタムドメインの設定が完了していないことを意味し、警告ページを伴う200はアプリやゲートウェイがそれをブロックしたことを意味し、301の連鎖は遷移先がそのリンク自身へ戻ってきていることを意味する。それぞれに異なる修正方法がある。
なぜ自分の短縮リンクで証明書が無効だと表示されるのですか。
カスタムドメインが、証明書が発行される前に短縮リンクを配信してしまっているためだ。これはDNSレコードは追加されたものの検証が完了しなかった場合や、プロバイダーが求めたCNAMEの代わりにAレコードでドメインをリダイレクトサービスへ向けてしまった場合に起こる。検証を完了させれば、証明書は自動的に発行される。
なぜ自分の短縮リンクはブラウザでは動作するのに、WhatsAppやSlackでは動作しないのですか。
アプリはメッセージを通す前にドメインを評判リストと照合しており、無料の共有シャートナードメインは、その中で最も悪質な利用者が積み上げた評判をそのまま背負っているからだ。同じリンクを自分自身のドメインへ移せば解決する。評判が自分だけのものになるからだ。
短縮リンクにおけるリダイレクトループとは何を意味するのですか。
遷移先が最終的に短縮リンク自身へ戻ってくるため、ブラウザは両者の間を行き来し続け、やがて諦めてしまう。これは通常、誰かがリンクを編集し、その短縮URLへリダイレクトするページを遷移先に設定してしまった場合や、2つのリンクが互いを指し合っている場合に起こる。遷移先は最終的なページへ設定すること。
自分の短縮リンクが404になるのに、ダッシュボードには表示されています。どうすればよいですか。
大文字小文字と文字を確認しよう。スラッグは通常大文字小文字を区別するため、/Springと/springは別のリンクになるし、大文字のIと小文字のlは印刷物から書き写す際に間違いやすい。次に、そのリンクに有効期限や、テストしている場所を除外する地域ルールが設定されていないか確認すること。
短縮リンクが動作し始めるまでどれくらいかかりますか。
すでに稼働しているドメイン上のリンクは即座に動作する。まったく新しいカスタムドメインの場合はDNSの伝播と証明書の発行を待つ必要があり、通常は数分だが、変更したレコードの以前のTTLによっては最大で1時間ほどかかることもある。
Elidoを試す
URLを貼り付けて短縮リンクを取得
登録不要。リンクは30日間有効。永久に保存するには登録してください。
Free、登録不要 · 1日あたり2件