CastMatrix

年齢確認

概要

18 歳未満のアクセス防止のため、ルート URL / を年齢確認専用ページとしています。確認済みのメインコンテンツは /home 以下に配置します。

動作

  1. 初回訪問時、/ で「はい(18 歳以上)」「いいえ(退出)」を表示します。
  2. 「はい」を選択すると Cookie に確認済みフラグを保存します(有効期間内は再表示しません)。
  3. 確認後、ユーザーは /home(店舗トップ)へ遷移します。
  4. /home 以下に直接アクセスした場合、Cookie がなければ / へリダイレクトします。

なぜ //home を分けるか

  • コンプライアンスを厳格かつシンプルに実装するためです。
  • 配下ページへの直アクセス時も、同一の Cookie チェックで / に戻せます。

SEO・クローラーの扱い

クローラーバイパス(全ページインデックス)

frontend/src/middleware.ts は Google・Bing 等の主要クローラーを User-Agent で判別し、年齢確認リダイレクトをスキップします。これにより:

  • キャスト一覧・個別ページ・出勤表・料金等、すべてのコンテンツページがインデックス可能
  • 検索エンジンに対してコンテンツ量・ページランクを蓄積できる
  • 検索結果にキャスト名・サービス内容が反映される

なぜクローキングにならないか
クローキングは「ユーザーと検索エンジンに意図的に異なるコンテンツを見せる」行為です。このサイトでは年齢認証後にユーザーが見るページと同一のコンテンツをクローラーに提供しているため、コンテンツの差異はありません。ペイウォール・サブスクリプションサイトのクローラー対応と同様の扱いです。

年齢確認ページ(/)のインデックス

/ はインデックス対象です。Googlebot はクッキーなしで各ページにアクセスしても(クローラーバイパスにより)コンテンツページをそのまま取得します。/ は店舗の公式入口として検索結果に表示されます。ページタイトルは {shop_name} | 年齢確認、canonical URL・OGP も設定されます。

注意事項

  • 年齢確認のバイパスや Cookie 無効化による抜け穴は 設計上許可していません。カスタマイズ時も同等の保護を維持してください。

Cookie 仕様

項目
Cookie 名 age_confirmed
1
有効期限 max-age=86400(24 時間)
パス /
SameSite Lax
Secure Cloudflare Pages は HTTPS 強制のため実質 Secure

リダイレクト実装

ミドルウェア: frontend/src/middleware.ts

  • / およびアセット(/_*/api/*)はチェックをスキップ
  • それ以外のパスに Cookie がない場合は 302/ へリダイレクト
  • Cookie の設定とリダイレクトはすべてサーバーサイド(エッジ)で処理される