Como: Escolher a aplicação e o ambiente baseado no nome de domínio
Propósito
As vezes desejamos escolher a aplicação e o ambiente que será executada baseado no nome de domínio. Isto permite que você não tenha arquivos como index.php, index_dev.php, backend.php, backend_dev.php, etc; mas tenha apenas um arquivo index.php controlando o seu projeto.
Código
index.php
<?php define('SF_ROOT_DIR', realpath(dirname(__FILE__).'/..')); /** * Verifica a existência do subdomínio admin e cria a aplicação admin */ if ( isset($_SERVER) && is_array($_SERVER) && isset($_SERVER['HTTP_HOST']) && preg_match('/admin./', $_SERVER['HTTP_HOST']) ) { define('SF_APP', 'backend'); } elseif ( isset($_SERVER) && is_array($_SERVER) && isset($_SERVER['HTTP_HOST']) && preg_match('/telemarket./', $_SERVER['HTTP_HOST']) ) { define('SF_APP', 'telemarketer'); } else { define('SF_APP', 'public'); } /** * Verifica a existência do subdomínio dev e cria o ambiente dev */ if ( isset($_SERVER) && is_array($_SERVER) && isset($_SERVER['HTTP_HOST']) && preg_match('/dev./', $_SERVER['HTTP_HOST']) ) { define('SF_ENVIRONMENT', 'dev'); define('SF_DEBUG', true); } else { define('SF_ENVIRONMENT', 'prod'); define('SF_DEBUG', false); } require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php'); sfContext::getInstance()->getController()->dispatch();
Uso
O arquivo acima permte que você tenha 6 diferentes nomes de domínio fazendo diferentes coisas
- http://www.dominio.com
- http://www.dev.dominio.com
- http://admin.dominio.com
- http://admin.dev.dominio.com
- http://telemarket.dominio.com
- http://telemarket.dev.dominio.com
Cada um dos subdomínios informa qual aplicação utilizar e se carregar ou não o ambiente dev.
Obviamente, você pode adicionar mais aplicações ou mais ambientes que atendam as suas necessidades.
Aviso
Assegure-se de que você desabilitou o subdomínio dev utilizando o arquivo .htaccess ou de que você não irá utilizar este arquivo index.php no seu servidor de produção.