個人的には、.htaccess に頼るのではなく、必要なすべてのルーティング ロジックをアプリケーションで実行するようにします。これは私がそれを行う方法です:
まず、ビルド済みのルーター クラス/モジュール/ライブラリを使用します。PHP でコーディングしている場合は、Alloy Routerなどを使用します。何らかのフレームワークを使用している場合、ルーティングは既に組み込まれている可能性があります。
次のステップは、以前に「キャッチ」されていないすべてのルートをキャッチする「すべてキャッチ」プロファイル ルートを作成することです。「website.com/about」、「website.com/contact」など、他のルートがたくさんある場合があります。これらは最初にキャッチされ、次にキャッチオール ルートが他のすべてを取得します。
キャッチオール ルートは、アプリケーションを「プロファイル」コントローラーにルーティングします。このコントローラーは、指定されたルートを見て、ルート内の「ユーザー名」がデータベース内のユーザー名と一致するかどうかを確認します。その場合は、その特定のユーザーのプロファイルを作成します。そうでない場合は、404 を提供します。
すべてのユーザー名が一意であり、他のルートと競合しないようにする必要があります (つまり、ユーザーは "about" というユーザー名を持つことはできません。そうしないと、ユーザーの URL が "about" ルートによってキャッチされます)。
最後に、アプリケーション内で、すべてのリンクを適切な URL に移動させる必要があります。上部のナビゲーション バーに「プロフィール」ボタンがある場合は、実際に「website.com/username」に移動することを確認する必要があります。ユーザー名は、現在ログインしているユーザーの実際のユーザー名です。他のユーザーのプロファイルへのリンクはすべて動的に作成され、ユーザー名を含む正しい URL に移動します。