Ответ таков: вы не разрабатываете свои URL так. Я знаю, что Vimeo делает это, но они, вероятно, столкнулись с этой головной болью.
Лучшее решение - это пространство имен ваших ресурсов. Посмотрите внимательно на URL-адреса stackoverflow для лучших примеров хорошего дизайна URL-адресов.
Если вы абсолютно застряли с этим дизайном URL, рассмотрите возможность организации ваших «токенов контента» (бит URL, который идентифицирует нужную вам вещь) в группы и присвоения им порядка приоритета. E.g.:
- если токен соответствует статической странице, показать статическую страницу
- иначе поиск и отображение страницы пользователя по имени учетной записи
- еще поиск и показ страницы пользователя по номеру счета
Когда пользователи регистрируются, не разрешайте им использовать имена, которые являются статическими страницами. (Вы можете заранее зарезервировать набор статических имен страниц.)
Если вы создадите новую статическую страницу позже и имя пользователя конфликтует, вы можете принудительно изменить его имя и отправить ему электронное письмо «Мне жаль». Надеемся, что это будет достаточно редкое явление, и вам не нужно решать его с помощью кода.