Why doesn't my custom OutboundPathProcessorInterface work anymore?
That's the right code of the processOutbound method
  public function processOutbound($path, &amp;$options = array(), Request $request = NULL, BubbleableMetadata $bubbleable_metadata = NULL) {

if (isset($options['entity']) &amp;&amp; is_object($options['entity']) &amp;&amp; method_exists($options['entity'], 'hasField')) {
  $node = $options['entity'];

  if ($node-&gt;hasField('field_project_url') &amp;&amp; !$node-&gt;field_project_url-&gt;isEmpty()) {
    $project_url = $node-&gt;field_project_url-&gt;getValue();

    if (preg_match(&quot;/^\/node\/[0-9]+\/(edit|translate|delete|translations)$/i&quot;, $path)) {
      // dont alter operational paths
    }
    else {
      $path = ''; //Don't use $path variable at all

      dpm($project_url[0]['uri']); // 'http://url.com'
      $options['base_url'] = $project_url[0]['uri']; //Add your url as base_url

    }

    if ($bubbleable_metadata) {
      $bubbleable_metadata-&gt;addCacheableDependency($node);
    }
  }
}
return $path;

}