VRChatのプロフィールURLは長い

自分のVRChatプロフィールURLは https://vrchat.com/home/user/usr_dec48a78-894a-4ef3-8524-8cf546ad1b2e
69文字でそこそこ長い。

UUIDそのままURLになってるので必然的に文字数が増えてしまう。

自分のプロフページを貼り付けることはあんまりないので不便ではないけれども、
名刺やTwitterやFediverse、その他スライドなどで自分のプロフィールを乗っけたいときに文字列の多いURLっていうのは、
見た目がダサいし、タイポの可能性もある。

QRコードにすればタイポの可能性はなくなるけれども、文字数が多いとQRコードも細かくなって見てくれがとても悪くなってしまいます。

リダイレクト

このURLは変更する方法も短いエイリアスURLみたいなものも存在しません。

短くする方法は短縮URLを使うのが楽そうですが、任意のエイリアスを使用できるかはわかりませんし、サ終で悲しみに暮れる場合もあります。(goo.gl、許さんぞ)

自分はjo3qma.comというドメインを所有しており、ここのようにブログも公開しています。
適当にサブドメインを切ってそこへのアクセスをVRChatのプロフィールにリダイレクトさせてやるのが良さそうです。

リダイレクトするにはWebサーバーを立ててそこでリダイレクト処理を書いてやるのが一番単純で楽なのでしょうが、
リダイレクトごときにWebサーバーを立てるのはめんどくさいのと余計なトラヒックが流れてしまうので、
CloudFlare Rulesを使ってリダイレクトするようにしてみます。

ちゃんとしっかりやるならば、Single Redirectsでリダイレクトルールを設定してあげるのが良いのでしょうが、
今回は雑にBulk Redirectsを使ってみます。

1. DNSレコードの設定

今回はVRChatのプロフィールへのリダイレクトにvrchat.jo3qma.comを使おうと思います。

A及びAAAAレコードにダミー用のIPアドレスを入力、プロキシステータスをONにします。 IPv4は192.0.2.1、IPv6は100::が良いそうです。

CloudFlare Redirect DNS Record

2. リダイレクトルールの設定

ルール -> リダイレクトルール -> Bulk Redirectsを開きます。

CloudFlare Bulk Redirect 「一括リダイレクトリストの作成」を押下。

CloudFlare Bulk Redirect List Name リダイレクトの名前と説明を入力します。
今回はVRChat以外のプロフィールにも使うことを見込んでprofile_redirectsという名前にしました。

CloudFlare Bulk Redirect List Input 一括リダイレクトは数千のレコードを一括で静的リダイレクトすることが目的の機能なので、CSVからの入力を専ら受け付けますが、手動で登録することもできるのでそちらを利用します。

CloudFlare Bulk Redirect List Input

  • ソースURL: vrchat.jo3qma.com
  • ターゲットURL: https://vrchat.com/(以下略
  • ステータス: 301

としました。

CloudFlare Bulk Redirect List Confirm 確認画面です。

CloudFlare Bulk Redirect 次にルールの設定を行います。

CloudFlare Bulk Redirect ルール名を決めます。

CloudFlare Bulk Redirect 「保存してデプロイ」するとルールが適用され、リダイレクトが開始されます。

3. 確認

coder@Hakoniwa:diary$ curl -I https://vrchat.jo3qma.com
HTTP/2 301 
date: Mon, 11 Nov 2024 01:10:42 GMT
content-type: text/html
content-length: 167
location: https://vrchat.com/home/user/usr_dec48a78-894a-4ef3-8524-8cf546ad1b2e
cache-control: max-age=3600
expires: Mon, 11 Nov 2024 02:10:42 GMT
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=bu3Fe5EhIwF9RpXAsSoeZpD0%2F60lw9FPwjETUwHAPbX%2BPduPW60OPvX%2BZHJsRjEtUBj%2BGfY4EIeGb%2BhbB%2BeiMy%2BG2HR%2BpnLqL%2BZgxCRE4dU6%2FVGKZax4lvSxaRmPxHrZHpOd2Q%3D%3D"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
strict-transport-security: max-age=15552000; preload
x-content-type-options: nosniff
server: cloudflare
cf-ray: 8e0a67722c3127de-SEA
alt-svc: h3=":443"; ma=86400
server-timing: cfL4;desc="?proto=TCP&rtt=98107&sent=6&recv=8&lost=0&retrans=0&sent_bytes=3398&recv_bytes=752&delivery_rate=42483&cwnd=33&unsent_bytes=0&cid=b96985845e33c4e9&ts=121&x=0"

coder@Hakoniwa:diary$ 

cURLでヘッダーを見てみるとちゃんとlocationが指定したURLになっているため、ちゃんとリダイレクトできています。

おわり

この方法は単純な静的リダイレクトルールを大量に登録できる代わりに、正規表現やワイルドカードに非対応です。
そのため、指定していないURLにアクセスされると通信できずタイムアウトしていまいます。

coder@Hakoniwa:diary$ curl -I https://vrchat.jo3qma.com/hogehoge
HTTP/2 522 
date: Mon, 11 Nov 2024 01:12:57 GMT
content-type: text/plain; charset=UTF-8
content-length: 15
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=%2FDlttMhQ7c%2FHYe2JmjVP5NlxBwGDkCfedrGzFa%2Fu5Mqt03D3ypXzQyjopzJsKxsYRiJ4XG%2FKTZRI0Fvj3wb%2FS1%2FMGnnB1htCxjJKUmzDML0m6%2FPRKCYGcN2wsvNzQo9O2BgSvg%3D%3D"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
strict-transport-security: max-age=15552000; preload
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
referrer-policy: same-origin
cache-control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
expires: Thu, 01 Jan 1970 00:00:01 GMT
server: cloudflare
cf-ray: 8e0a69c8c8dad045-SJC
alt-svc: h3=":443"; ma=86400
server-timing: cfL4;desc="?proto=TCP&rtt=106294&sent=8&recv=11&lost=0&retrans=0&sent_bytes=3420&recv_bytes=791&delivery_rate=39218&cwnd=40&unsent_bytes=0&cid=a9a958de2bcb652d&ts=39215&x=0"

coder@Hakoniwa:diary$ 

まあ、見なかったことにすることにします。