- $gserver = $this->dba->selectFirst('gserver', ['url'], ['id' => $contact['gsid']]);
- if (empty($gserver)) {
- $this->logger->notice('Server not found, redirecting to destination.', ['gsid' => $contact['gsid'], 'dest' => $dest]);
+ if (!empty($contact['gsid'])) {
+ $gserver = $this->dba->selectFirst('gserver', ['url'], ['id' => $contact['gsid']]);
+ if (empty($gserver)) {
+ $this->logger->notice('Server not found, redirecting to destination.', ['gsid' => $contact['gsid'], 'dest' => $dest]);
+ System::externalRedirect($dest);
+ }
+
+ $basepath = $gserver['url'];
+ } elseif (GServer::check($target)) {
+ $basepath = (string)GServer::cleanUri(new Uri($target));
+ } else {
+ $this->logger->notice('The target is not a server path, redirecting to destination.', ['target' => $target]);