How to add a catch-all wildcard to hook_menu? I want a url structure like so:

https://example.com/bob


which loads a custom page for the user bob. This is what I'm trying:

function mymodule_storefront_menu() {

    $items = array();

    // Wildcard catch for user's storefront
    $items['%'] = array(
      'title'           =&gt; 'User custom page',
      'type'            =&gt; MENU_CALLBACK,
      'page callback'   =&gt; 'mymodule_load_user_page',
      'page arguments'  =&gt; array(0),
      'access callback' =&gt; TRUE,
    );

    return $items;
}

function mymodule_load_user_page($user) {
    echo $user;
}


However, I'm getting a server 404 and drupal is logging a 'page not found' message the the dblog. Any ideas?

Edit:

I am able to get this to work:

$items['u/%'] = array(...);


but would prefer the plain wildcard to work, if possible.
The documentation for hook_menu() says it in the first wildcard example it provides. (Emphasis is mine.)


  Wildcards in Paths
  
  Simple Wildcards
  
  Wildcards within paths also work with integer substitution. For example, your module could register path 'my-module/%/edit':

  $items['my-module/%/edit'] = array(
    'page callback' =&gt; 'mymodule_abc_edit',
    'page arguments' =&gt; array(1),
  );

  
  When path 'my-module/foo/edit' is requested, integer 1 will be replaced with 'foo' and passed to the callback function. Note that wildcards may not be used as the first component.


The reason of this is pretty easy to understand: A wildcard as first component would be a catch-up for every Drupal route.
It would also conflict with the routes every Drupal module defines. This is also the reason why Drupal core uses node/%node for nodes, and user/%user for user accounts: Despite the wildcards being qualified, Drupal would not understand if a URI like 1 is referring to a node or a user account.