サブドメインからVRChatのプロフィールにリダイレクトするようにした
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::
が良いそうです。
2. リダイレクトルールの設定
ルール
-> リダイレクトルール
-> Bulk Redirects
を開きます。
「一括リダイレクトリストの作成」を押下。
リダイレクトの名前と説明を入力します。
今回はVRChat以外のプロフィールにも使うことを見込んでprofile_redirects
という名前にしました。
一括リダイレクトは数千のレコードを一括で静的リダイレクトすることが目的の機能なので、CSVからの入力を専ら受け付けますが、手動で登録することもできるのでそちらを利用します。
- ソースURL:
vrchat.jo3qma.com
- ターゲットURL:
https://vrchat.com/(以下略
- ステータス:
301
としました。
確認画面です。
次にルールの設定を行います。
ルール名を決めます。
「保存してデプロイ」するとルールが適用され、リダイレクトが開始されます。
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$
まあ、見なかったことにすることにします。