6) { $domain = implode('.', array_reverse(array_slice(array_reverse($domainPart), 6))); } } return $domain; } /** * Load the Valet configuration. */ $valetConfig = json_decode( file_get_contents(VALET_HOME_PATH.'/config.json'), true ); /** * Parse the URI and site / host for the incoming request. */ $uri = urldecode( explode("?", $_SERVER['REQUEST_URI'])[0] ); $siteName = basename( // Filter host to support xip.io feature valet_support_xip_io($_SERVER['HTTP_HOST']), '.'.$valetConfig['domain'] ); if (strpos($siteName, 'www.') === 0) { $siteName = substr($siteName, 4); } /** * Determine the fully qualified path to the site. */ $valetSitePath = null; $domain = array_slice(explode('.', $siteName), -1)[0]; foreach ($valetConfig['paths'] as $path) { if (is_dir($path.'/'.$siteName)) { $valetSitePath = $path.'/'.$siteName; break; } if (is_dir($path.'/'.$domain)) { $valetSitePath = $path.'/'.$domain; break; } } if (is_null($valetSitePath)) { show_valet_404(); } $valetSitePath = realpath($valetSitePath); /** * Find the appropriate Valet driver for the request. */ $valetDriver = null; require __DIR__.'/cli/drivers/require.php'; $valetDriver = ValetDriver::assign($valetSitePath, $siteName, $uri); if (! $valetDriver) { show_valet_404(); } /** * ngrok uses the X-Original-Host to store the forwarded hostname. */ if (isset($_SERVER['HTTP_X_ORIGINAL_HOST']) && !isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { $_SERVER['HTTP_X_FORWARDED_HOST'] = $_SERVER['HTTP_X_ORIGINAL_HOST']; } /** * Allow driver to mutate incoming URL. */ $uri = $valetDriver->mutateUri($uri); /** * Determine if the incoming request is for a static file. */ $isPhpFile = pathinfo($uri, PATHINFO_EXTENSION) === 'php'; if ($uri !== '/' && ! $isPhpFile && $staticFilePath = $valetDriver->isStaticFile($valetSitePath, $siteName, $uri)) { return $valetDriver->serveStaticFile($staticFilePath, $valetSitePath, $siteName, $uri); } /** * Attempt to dispatch to a front controller. */ $frontControllerPath = $valetDriver->frontControllerPath( $valetSitePath, $siteName, $uri ); if (! $frontControllerPath) { show_valet_404(); } chdir(dirname($frontControllerPath)); require $frontControllerPath;