Reserved-usernames: Usernames to prevent url collision with resource paths
github.com
github.com
Seems silly. You should either put users at example.com/user/{username} or you should put all non-user profiles under a reserved base like example.com/res/settings.
That can help stop some particularly egregious social engineering attacks.
consider:
website.org/aloha
website.org/contact
website.org/u/aloha
website.org/users/aloha
users.website.org/aloha
u.website.org/aloha
aloha.website.org
with the first two examples, yes, there is a potential for collision - so you'd want something like this.
I consider the next four examples to be best - the final example I consider potentially administratively painful depending on implementation.
Mastodon's interesting approach: website.org/@aloha
I still use ~ on a couple web servers I administer, easy way for me to give people a sandbox attached to their user.
That said, it might still be a good idea to blacklist these anyway, as you might end up with someone registering the username 'reset-password' (which isn't on this list yet) trying to phish your users, or 'support' trying to masquerade as your support, depending on what your app does.
As other people have mentioned, namespaces for user URLs solves this better.
reddit.com/r/subreddit
reddit.com/user/my_user_name (Why not u? I don't know.)
Pretty straight forward. There are also ones like subreddit statistics and they're all... after the name. reddit.com/r/subreddit/about/traffic
(Note: Public viewable stats are only turned on if the mods turn it on.)[edit] Wait. Reddit removed user access site-wide to those pages? Morons. Well, the URL point still stands.
reddit.com/u/foo
does work, but it just redirects to reddit.com/user/foo