Bug #89126
closedPageRouter ignores id=123 parameter if page record does not load
100%
Description
In PageRouter there exists a check if $_GET['id'] is provided, in which case, the legacy page handling is supposed to take priority.
But because of the way the condition is created, failure to resolve a page record (becuase of invalid uid) never triggers any error handling. Instead, the condition falls through to the "else" case which then resolves the default start page of the domain - because it ignores the "id" parameter and sees a single URL slug valued "/".
The solution is two parts: 1) if "id" is provided, never allow fallback to using site root page, and 2) if "id" does not resolve a page, trigger the error handler.
Condition is:
if (!empty($requestId) && ($page = $this->resolvePageId($requestId)) (
// no error handling happens here
} else {
// site configuration fallbacks processedhere
}
And must instead me:
if (!empty($requestId)) {
$page = $this->resolvePageId($requestId);
if (!$page) {
// trigger error handling
}
// existing processing for legacy ID
} else {
// site configuration fallback now explicitly can only happen if $requestId is not provided.
}