Crikey! There was an error...
20. Whoops\Exception\ErrorException
…/­user/­plugins/­external_links/­classes/­ExternalLinks.php197
19. Whoops\Run handleError
…/­user/­plugins/­external_links/­classes/­ExternalLinks.php197
18. Grav\Plugin\ExternalLinks isExternalUrl
…/­user/­plugins/­external_links/­classes/­ExternalLinks.php78
17. Grav\Plugin\ExternalLinks Grav\Plugin\{closure}
<#unknown>0
16. preg_replace_callback
…/­user/­plugins/­external_links/­classes/­ExternalLinks.php134
15. Grav\Plugin\ExternalLinks process
…/­user/­plugins/­external_links/­external_links.php113
14. Grav\Plugin\ExternalLinksPlugin onPageContentProcessed
<#unknown>0
13. call_user_func
…/­vendor/­symfony/­event-dispatcher/­Symfony/­Component/­EventDispatcher/­EventDispatcher.php164
12. Symfony\Component\EventDispatcher\EventDispatcher doDispatch
…/­vendor/­symfony/­event-dispatcher/­Symfony/­Component/­EventDispatcher/­EventDispatcher.php53
11. Symfony\Component\EventDispatcher\EventDispatcher dispatch
…/­vendor/­rockettheme/­toolbox/­Event/­src/­EventDispatcher.php23
10. RocketTheme\Toolbox\Event\EventDispatcher dispatch
…/­system/­src/­Grav/­Common/­Grav.php343
9. Grav\Common\Grav fireEvent
…/­system/­src/­Grav/­Common/­Page/­Page.php476
8. Grav\Common\Page\Page cachePageContent
…/­system/­src/­Grav/­Common/­Page/­Page.php406
7. Grav\Common\Page\Page content
…/­user/­plugins/­precache/­precache.php59
6. Grav\Plugin\PreCachePlugin onShutdown
<#unknown>0
5. call_user_func
…/­vendor/­symfony/­event-dispatcher/­Symfony/­Component/­EventDispatcher/­EventDispatcher.php164
4. Symfony\Component\EventDispatcher\EventDispatcher doDispatch
…/­vendor/­symfony/­event-dispatcher/­Symfony/­Component/­EventDispatcher/­EventDispatcher.php53
3. Symfony\Component\EventDispatcher\EventDispatcher dispatch
…/­vendor/­rockettheme/­toolbox/­Event/­src/­EventDispatcher.php23
2. RocketTheme\Toolbox\Event\EventDispatcher dispatch
…/­system/­src/­Grav/­Common/­Grav.php343
1. Grav\Common\Grav fireEvent
…/­system/­src/­Grav/­Common/­Grav.php379
0. Grav\Common\Grav shutdown
<#unknown>0

Whoops \ Exception \ ErrorException (E_NOTICE)

Callstack information; navigate with mouse or keyboard using Ctrl+↑ or Ctrl+↓
Copy-to-clipboard button
Exception message and its type
Code snippet where the error was thrown
Server state information
Application provided context information
Whoops\Exception\ErrorException thrown with message "Undefined variable: colonpos" Stacktrace: #20 Whoops\Exception\ErrorException in /home/andredbq/www.andreasmaucher.de/user/plugins/external_links/classes/ExternalLinks.php:197 #19 Whoops\Run:handleError in /home/andredbq/www.andreasmaucher.de/user/plugins/external_links/classes/ExternalLinks.php:197 #18 Grav\Plugin\ExternalLinks:isExternalUrl in /home/andredbq/www.andreasmaucher.de/user/plugins/external_links/classes/ExternalLinks.php:78 #17 Grav\Plugin\ExternalLinks:Grav\Plugin\{closure} in <#unknown>:0 #16 preg_replace_callback in /home/andredbq/www.andreasmaucher.de/user/plugins/external_links/classes/ExternalLinks.php:134 #15 Grav\Plugin\ExternalLinks:process in /home/andredbq/www.andreasmaucher.de/user/plugins/external_links/external_links.php:113 #14 Grav\Plugin\ExternalLinksPlugin:onPageContentProcessed in <#unknown>:0 #13 call_user_func in /home/andredbq/www.andreasmaucher.de/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php:164 #12 Symfony\Component\EventDispatcher\EventDispatcher:doDispatch in /home/andredbq/www.andreasmaucher.de/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php:53 #11 Symfony\Component\EventDispatcher\EventDispatcher:dispatch in /home/andredbq/www.andreasmaucher.de/vendor/rockettheme/toolbox/Event/src/EventDispatcher.php:23 #10 RocketTheme\Toolbox\Event\EventDispatcher:dispatch in /home/andredbq/www.andreasmaucher.de/system/src/Grav/Common/Grav.php:343 #9 Grav\Common\Grav:fireEvent in /home/andredbq/www.andreasmaucher.de/system/src/Grav/Common/Page/Page.php:476 #8 Grav\Common\Page\Page:cachePageContent in /home/andredbq/www.andreasmaucher.de/system/src/Grav/Common/Page/Page.php:406 #7 Grav\Common\Page\Page:content in /home/andredbq/www.andreasmaucher.de/user/plugins/precache/precache.php:59 #6 Grav\Plugin\PreCachePlugin:onShutdown in <#unknown>:0 #5 call_user_func in /home/andredbq/www.andreasmaucher.de/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php:164 #4 Symfony\Component\EventDispatcher\EventDispatcher:doDispatch in /home/andredbq/www.andreasmaucher.de/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php:53 #3 Symfony\Component\EventDispatcher\EventDispatcher:dispatch in /home/andredbq/www.andreasmaucher.de/vendor/rockettheme/toolbox/Event/src/EventDispatcher.php:23 #2 RocketTheme\Toolbox\Event\EventDispatcher:dispatch in /home/andredbq/www.andreasmaucher.de/system/src/Grav/Common/Grav.php:343 #1 Grav\Common\Grav:fireEvent in /home/andredbq/www.andreasmaucher.de/system/src/Grav/Common/Grav.php:379 #0 Grav\Common\Grav:shutdown in <#unknown>:0

Undefined variable: colonpos

        // We found an url without protocol, but with starting
        // 'www' (sub-)domain
        $external = TRUE;
      }
    }
 
    // Only if a colon and a valid protocol was found return TRUE
    return ($colonpos !== FALSE) AND $external;
  }
 
        // We found an url without protocol, but with starting
        // 'www' (sub-)domain
        $external = TRUE;
      }
    }
 
    // Only if a colon and a valid protocol was found return TRUE
    return ($colonpos !== FALSE) AND $external;
  }
 
 
        // This is a mailto link.
        if ( strpos($href, 'mailto:') === 0 ) {
          $classes[] = 'mailto';
        }
 
        // The link is external
        elseif ( $this->isExternalUrl($href, $domains) ) {
          // Add external class
          $classes[] = 'external-link';
<#unknown>
        if ( count($classes) AND ($options->get('mode') === 'active') ) {
          $a->setAttribute('class', implode(' ', $classes));
        }
 
        // Save Dom document back to HTML representation
        $html = $this->saveDOMDocument($dom);
        return $html;
    }, $content);
 
    // Write content back to page
      }
 
      // Get content and list of exclude tags
      $content = $page->getRawContent();
 
      // Apply external links filter and save modified page content
      $page->setRawContent(
        $this->external_links->process($content, $config)
      );
    }
<#unknown>
     * @param callable[] $listeners The event listeners.
     * @param string     $eventName The name of the event to dispatch.
     * @param Event      $event     The event object to pass to the event handlers/listeners.
     */
    protected function doDispatch($listeners, $eventName, Event $event)
    {
        foreach ($listeners as $listener) {
            call_user_func($listener, $event, $eventName, $this);
            if ($event->isPropagationStopped()) {
                break;
        $event->setDispatcher($this);
        $event->setName($eventName);
 
        if (!isset($this->listeners[$eventName])) {
            return $event;
        }
 
        $this->doDispatch($this->getListeners($eventName), $eventName, $event);
 
        return $event;
{
    public function dispatch($eventName, BaseEvent $event = null)
    {
        if (null === $event) {
            $event = new Event();
        }
 
        return parent::dispatch($eventName, $event);
    }
}
     * @param  Event  $event
     * @return Event
     */
    public function fireEvent($eventName, Event $event = null)
    {
        /** @var EventDispatcher $events */
        $events = $this['events'];
        return $events->dispatch($eventName, $event);
    }
 
     * Fires the onPageContentProcessed event, and caches the page content using a unique ID for the page
     */
    private function cachePageContent()
    {
        $cache = self::getGrav()['cache'];
        $cache_id = md5('page'.$this->id());
 
        self::getGrav()->fireEvent('onPageContentProcessed', new Event(['page' => $this]));
        $cache->save($cache_id, $this->content);
    }
                        $this->cachePageContent();
                    }
                    if ($process_twig) {
                        $this->processTwig();
                        $twig_already_processed = true;
                    }
                    if ($cache_twig) {
                        $this->cachePageContent();
                    }
                }
 
            foreach ($routes as $route => $path) {
                // Log our progress
                $this->grav['log']->addWarning('precache: '.$route);
                try {
                    $page = $pages->get($path);
                    // call the content to load/cache it
                    $page->content();
                } catch (\Exception $e) {
                    // do nothing on error
<#unknown>
     * @param callable[] $listeners The event listeners.
     * @param string     $eventName The name of the event to dispatch.
     * @param Event      $event     The event object to pass to the event handlers/listeners.
     */
    protected function doDispatch($listeners, $eventName, Event $event)
    {
        foreach ($listeners as $listener) {
            call_user_func($listener, $event, $eventName, $this);
            if ($event->isPropagationStopped()) {
                break;
        $event->setDispatcher($this);
        $event->setName($eventName);
 
        if (!isset($this->listeners[$eventName])) {
            return $event;
        }
 
        $this->doDispatch($this->getListeners($eventName), $eventName, $event);
 
        return $event;
{
    public function dispatch($eventName, BaseEvent $event = null)
    {
        if (null === $event) {
            $event = new Event();
        }
 
        return parent::dispatch($eventName, $event);
    }
}
     * @param  Event  $event
     * @return Event
     */
    public function fireEvent($eventName, Event $event = null)
    {
        /** @var EventDispatcher $events */
        $events = $this['events'];
        return $events->dispatch($eventName, $event);
    }
 
 
            if (function_exists('fastcgi_finish_request')) {
                @fastcgi_finish_request();
            }
 
        }
 
        $this->fireEvent('onShutdown');
    }
}
<#unknown>
Key Value
REDIRECT_UNIQUE_ID VUbgJFd30XEAADFLrTcAAAAP
REDIRECT_PHP5_VERSION 5.6.2
REDIRECT_QMAILUSER postmaster
REDIRECT_QMAILHOST andreasmaucher.de
REDIRECT_RLIMIT_CPU 12
REDIRECT_RLIMIT_NPROC 32
REDIRECT_RLIMIT_AS 64000000
REDIRECT_RLIMIT_NOFILE 100
REDIRECT_PHPRC /home/andredbq
REDIRECT_HANDLER php5wrap
REDIRECT_STATUS 200
UNIQUE_ID VUbgJFd30XEAADFLrTcAAAAP
PHP5_VERSION 5.6.2
QMAILUSER postmaster
QMAILHOST andreasmaucher.de
RLIMIT_CPU 12
RLIMIT_NPROC 32
RLIMIT_AS 64000000
RLIMIT_NOFILE 100
PHPRC /home/andredbq
HTTP_HOST www.andreasmaucher.de
HTTP_ACCEPT_ENCODING x-gzip, gzip, deflate
HTTP_USER_AGENT CCBot/2.0 (http://commoncrawl.org/faq/)
HTTP_ACCEPT_LANGUAGE en-us,en-gb,en;q=0.7,*;q=0.3
HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
PATH /command:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin
SERVER_SIGNATURE
SERVER_SOFTWARE Apache
SERVER_NAME www.andreasmaucher.de
SERVER_ADDR 87.119.209.113
SERVER_PORT 80
REMOTE_ADDR 54.211.101.8
DOCUMENT_ROOT /home/andredbq/www.andreasmaucher.de
SERVER_ADMIN maucher@vierdimensional.com
SCRIPT_FILENAME /home/andredbq/www.andreasmaucher.de/index.php
REMOTE_PORT 47620
REDIRECT_URL /index.php
GATEWAY_INTERFACE CGI/1.1
SERVER_PROTOCOL HTTP/1.0
REQUEST_METHOD GET
QUERY_STRING
REQUEST_URI /
SCRIPT_NAME /index.php
ORIG_SCRIPT_FILENAME
ORIG_PATH_INFO /index.php
ORIG_PATH_TRANSLATED /home/andredbq/www.andreasmaucher.de/index.php
ORIG_SCRIPT_NAME
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1430708260.2404
REQUEST_TIME 1430708260
empty
empty
empty
empty
empty
empty
pretty. Whoops\Handler\PrettyPageHandler
text. Whoops\Handler\PlainTextHandler
json. Whoops\Handler\JsonResponseHandler
log. Whoops\Handler\CallbackHandler