URL短縮サービスの作り方
URL短縮サービスは、長いWebアドレスを短いコードの下に保存し、その短いリンクを開いた人を元のアドレスへリダイレクトします。中核部分はごく小さく、テーブル一つとリダイレクトのルート一つで済むため、定番の最初のプロジェクトです。実用的なものにするのは、その他の部分です。短いドメイン、カスタムスラッグ、クリック数、リンク先の編集、そして、あなたのドメインを使って詐欺リンクを隠すスパマーを防ぐことです。最初に、あなたとチームだけのものにするか、一般公開するかを決めてください。公開されたサービスは、すぐに悪用されやすいからです。
URL短縮サービスに必要なもの
データ
| テーブル | フィールド |
|---|---|
| リンク | 短いコード、移動先URL、所有者、タイトル、作成日、有効フラグ、任意の有効期限 |
| クリック | リンク、日時、リファラー、国、デバイスの種類 |
| ドメイン(任意) | カスタムの短縮ドメインとその所有者 |
短いコードには一意のインデックスを付けてください。同じコードを持つ二つのリンクができることは、絶対に起きてはならない唯一のバグです。
ページとルート
- リダイレクトのルート:
/{code}でコードを検索し、リダイレクトします。ほとんどの訪問者が触れるのはこのルートだけなので、高速で、アプリの画面を決して表示してはいけません。 - リンク作成:URLを貼り付け、必要ならカスタムスラッグを選んで、コピーボタン付きの短いリンクを得ます。
- リンク一覧:クリック数、検索、オン/オフの切り替え付きのリンク一覧。
- リンクの詳細:時間ごとのクリック、主なリファラー、国、デバイス。移動先の編集。
- 見つからないページ:存在しないコードや無効化されたコードのためのページ。
- QRコード:各リンクのQRコード。追加するのは簡単で、よく求められます。
判断とトレードオフ
リダイレクトの種類。 301(恒久的)のリダイレクトはブラウザにキャッシュされることがあり、そのため、再訪問者はサーバーを経由しなくなります。クリックを取りこぼし、その人に対して移動先を変更できなくなります。クリックを追跡する、または編集を許可する場合は、302か307を使ってください。クリックを追跡する短縮サービスの多くが、そうしています。
短いコード。 英字と数字からなる6〜7文字のランダムなコードは推測されにくく、十分な余地があります。人が手でリンクを入力するなら、紛らわしい文字(0とO、1とl)は避けてください。連番のコードは、リンクの総数を明かし、誰でも順番にたどれてしまいます。
カスタムスラッグ。 /launch の方が /x7Kp2q よりも良いです。アプリが使う語(login、api、admin)は予約し、公開サービスなら不適切なスラッグを禁止し、大文字と小文字を区別するかどうかも決めてください。区別しない方が使いやすいです。
速度。 短縮サービスは、訪問のたびに一つ余分な経路を加えます。リダイレクトのルートは、インデックスの効いた一度の検索だけに抑え、クリックの記録はリダイレクトを送った後で(またはバックグラウンドで)行ってください。そうすれば、追跡が訪問者を遅くすることはありません。アイドル時にスリープするホスティングのアプリは、静かな時間の後の最初の訪問で少し遅くなることがあります。個人用やチーム用のツールなら、通常はそれで問題ありません。
クリック分析とプライバシー。 クリック数、リファラー、おおよその国を数えるのは一般的です。完全なIPアドレスを保存し、個人のプロファイルを作ることは、個人情報保護の法律が適用され始めるところです。実際に見るものだけを保存し、可能な限り集計してください。アプリに分析を追加する方法を参照してください。
ドメイン。 リンクは、そのドメインと同じくらいしか短くなりません。短いドメインを購入してアプリに向けてください。詳しくはカスタムドメインの接続方法を参照してください。多くのホスティングは、ルートドメインよりもサブドメイン(go.yourbrand.com)を好みます。その方が接続が簡単だからです。
悪用。 誰でもリンクを作れるなら、スパマーがあなたのドメインを使って、フィッシングやマルウェアを隠すようになります。その結果、あなたのドメインがブロックリストに載ることもあります。公開する短縮サービスなら、アカウントを必須にし、作成回数を制限し、Google Safe Browsingなどの悪意あるURLのリストで移動先を確認し、自分の短縮サービス自体へのリンクをブロックし(リダイレクトのループを防ぐため)、どのリンクでもすぐに無効にできる管理者用のスイッチを作ってください。チームだけが使うプライベートな短縮サービスなら、これらの問題のほとんどは避けられます。
最初に効くプロンプトの例
チーム用のURL短縮Webアプリを作ってください。ログインしたユーザーは、移動先URLを貼り付けると、ランダムな7文字のコード(0、O、1、lは使わない)の短いリンクを取得できます。または、カスタムスラッグを選ぶこともできます。スラッグは一意で、大文字と小文字を区別せず、login、api、admin、app、settings は予約してください。公開ルートの /{code} は、単一のインデックス検索でコードを探し、302のリダイレクトを返してください。クリックは、時刻、リファラー、国、デバイスの種類を記録し(完全なIPアドレスは保存しない)、リダイレクトを遅らせずに記録してください。存在しないコードや無効なコードには、シンプルな「見つかりません」ページを表示してください。ユーザーは、クリック数付きの自分のリンク一覧を見られ、移動先を編集し、リンクを無効化し、QRコードをダウンロードし、日ごとのクリック、主なリファラー、国を表示する詳細ページを開けるようにしてください。移動先はhttpかhttpsのURLであることを検証し、この短縮サービス自身へのリンクは拒否してください。すべてのデータはデータベースに保存してください。
構築の手順
- 作成とリダイレクト。 リンクを作って、プライベートウィンドウで開きます。レスポンスが302であること、JavaScriptで後からリダイレクトするページではないことを確認します。
- コードとスラッグ。 重複したスラッグ、予約語、大文字と小文字の混在、非常に長いURLを試します。
- クリックの追跡。 数台の端末からクリックし、数とリファラーを確認します。
- 編集と無効化。 移動先を変更し、古い短いリンクが新しい場所に行くことを確認します。一つを無効化し、止まることを確認します。
- 検証。
javascript:のリンク、短縮サービス自身へのリンク、不正な形式のURLを試します。すべて、サーバー側で拒否されるべきです。 - ドメイン。 短いドメインを接続し、そのドメインでリンクをテストします。
- 悪用対策(公開する場合):レート制限、移動先の確認、最近のリンクを見る管理者画面。
よくある間違い
- 301リダイレクトでクリックを追跡する。 ブラウザがキャッシュするため、数字が狂います。
- ページの中でリダイレクトする。 アプリを読み込んでから、JavaScriptでリダイレクトすると、すべてのクリックが遅く感じられます。リダイレクトはサーバーから行ってください。
- コードに一意制約がない。 いつか衝突が起きます。
- 制限のない公開の短縮サービス。 悪用され、あなたのドメインの評判も失われます。
- どんなURLのスキームでも受け入れる。 許可するのはhttpとhttpsの移動先だけにしてください。
- 引っ越しでリンクを失う。 短いドメインは自分で所有し、ホスティングを変えてもリンクが生き続けるようにしてください。
既成の製品の方が良い場合
確立されたリンク管理サービスは、ブランドドメイン、詳細な分析、チーム機能、QRコード、連携、そして悪用への対処を最初から提供しています。リンクがマーケティングの中心で、保守をまったくしたくないなら、料金を払ってそれを使ってください。
自作を選ぶのは、課金を座席単位にせず、自分のドメインでシンプルなチーム用の短縮サービスを使いたい場合、自分のプロダクトに深く結びついたリンク(共有リンク、紹介リンク、メールに入れる追跡リンク)が必要な場合、またはクリックデータを完全に自分で管理したい場合です。また、最初のバックエンドのプロジェクトとしても良い題材です。誰にでも公開する前には、AIで作ったアプリのためのセキュリティチェックリストにも目を通してください。リンクインバイオページと組み合わせるのもよいでしょう。
Mythexで作る
Mythexでは、チャットで短縮サービスを説明すると、ライブプレビューでリダイレクトをテストできます。アプリにその必要があれば、Mythexはリンクとクリックのための専用のデータベースを追加します。公開されたアプリとそのデータベースは、アイドル時にはスリープし、次の訪問で目を覚まします。そのため、静かな短縮サービスの運用コストは低く抑えられます。mythex.aiのリンクで公開できます。Proプランなら、自分の短いドメインを接続するか、Mythex内でドメインを購入できます(カスタムドメインを参照)。URL短縮のテンプレートは、カスタムスラッグとクリック分析を備えた、書かれた出発点のプロンプトです。
よくある質問
URL短縮サービスでは、301と302のどちらのリダイレクトを使うべきですか?
301は恒久的な移動であることをブラウザに伝えるため、ブラウザがキャッシュし、次回以降はサーバーを経由しなくなることがあります。その結果、クリックを取りこぼし、リンクの移動先を変えられなくなります。クリックを追跡する、または編集を許可する短縮サービスの多くは、302か307の一時的なリダイレクトを使います。
短いコードはどのように生成しますか?
英字と数字のランダムな文字列を作り、既存のコードと照合する方法か、データベースのIDを基数62でエンコードする方法があります。ランダムなコードは推測されにくく、連番のコードはリンクの総数を知られてしまいます。ランダムな6〜7文字なら、組み合わせは数十億通りになります。
短いドメインは必要ですか?
動かすだけなら必須ではありません。しかし、短縮サービスの目的は、短くて信頼できるリンクにあります。自分が所有する短いカスタムドメインがあれば、ホスティングを移してもリンクが動き続けます。
公開されたURL短縮サービスが悪用されるのを防ぐにはどうすればいいですか?
リンクを作るには登録を必須にし、リンク作成の回数を制限し、移動先をGoogle Safe Browsingなどの悪意あるURLのリストと照合し、自分のドメインを移動先としてブロックし、リンクを素早く無効にする手段を用意してください。