Extending existing menu/route in module_menu_alter Trying to extend Rooms (rooms_booking_manager):

Originally, there is an enquiry-page which takes arguments 

"enquiry/[startDate]/[endDate]/[roomNumber]"


I want to write a more specific handler IF arguments persons and children are given as in enquiry/startDate/endDate/roomNumber/numberOfPersons/numberOfChildren; in that case my own handler should take precedence.

This is the code used by the module.

function rooms_booking_manager_menu() {
  $items = array();

  $items['enquiry/%start_date/%end_date'] = array(
    'title' =&gt; 'Ask about availability',
    'page callback' =&gt; 'rooms_booking_manager_enquiry_page',
    'page arguments' =&gt; array(1, 2),
    'access arguments' =&gt; array('book units'),
    'type' =&gt; MENU_CALLBACK,
  );

  // …

  return $items;
}


This is the code I use in my module.

function netfactory_rooms_menu_alter(&amp;$items) {
  $items['enquiry/%start_date/%end_date/%persons/%children'] = array(
    'title' =&gt; 'Ask about availability',
    'page callback' =&gt; 'netfactory_rooms_enquiry_page',
    'page arguments' =&gt; array(1, 2, 3, 4),
    'access arguments' =&gt; array('book units'),
    'type' =&gt; MENU_CALLBACK,
  );
}


Nevertheless, if I call enquiry/startDate/endDate/roomNumber/numberOfPersons/numberOfChildren rooms_booking_manager_enquiry_page() is called instead of netfactory_rooms_enquiry_page().

Coming from a .NET MVC background, I was thinking that the order (most specific first) is important; so I also tried setting weight=-1000 on my own route, but that did not help either.

How can I hook into a module to add a route which is MORE SPECIFIC than an existing route?
I would try netfactory_rooms_menu() (i.e. hook_menu() instead of hook_menu_alter()). You are effectively creating a new menu callback, not extending an existing one. 

Also, CLEAR THE CACHE before trying the new path.