私は、単純に数字を取り、カスタムアルファベットを使用してbase-58でエンコード/デコードするPHPエンコード/デコード全単射関数を作成しました。
この短縮機能は正常に機能しますが、特定の単語を制限し、カスタムのバニティ URLを作成できるようにしたいと考えています。
これは、ユーザーがdomain.com/boobsなどへのリンクを再度取得しないことを意味するはずです。
また、全単射機能を中断することなくdomain.com/stackoverflowをdomain.com/12342に解決できるようにしたいと考えています。
提案された解決策
いくつかの提案がありましたが、最適とは思えません。私が考えた方法の 1 つは、カスタム URL をデータベースに保存することです。そのため、1234 => mycoolurl をエンコード/デコードして、既に存在するかどうかを確認します。そうであれば、数値を 10,000,000 のようにオフセットします (したがって、10,001,234 になり、それをエンコード/デコードします。これにより、一部のリンクが他のリンクよりもはるかに長くなり、ハード リミットが 10,000,000 リンクに設定されます (これは実際には問題ありませんが、それでもあまりエレガントではありません)。呪いの言葉の問題を解決するために、DB にダミー リンクを挿入できます。
ご意見をお待ちしております。