Back-End

27 jul, 2009

CakePHP em subdomínio

Publicidade

Olá, Galera! Depois de apanhar um pouquinho do CakePHP pra colocar ele em um subdomínio em meu servidor, achei um tutorial no Bakery ensinando como fazer. Lendo o texto, vi que além da maneira explicada no tutorial de como fazer, existe também uma outra maneira explicada em um dos comentários dos usuários, que também funciona perfeitamente.

Então, a seguir mostrarei como colocar seu CakePHP 1.2 para funcionar em um subdomínio tal como: www.seusite.dominio.com.br

O exemplo do tutorial do Bakery sugere o seguinte:

Tomando como exemplo que a página inicial do seu site seja a página de usuários, você deverá fazer o seguinte:

// dentro do arquivo users_controller.php

function view($unique_title){
    $this->set('users', $this->User->findByUniqueTitle($unique_title) ); 
}

// no arquivo /app/config/routes.php

Router::connect('/user/*', array('controller' => 'user', 'action' => 'view'));

// no arquivo app/config/bootstrap.php

$subdomain = substr( env("HTTP_HOST"), 0, strpos(env("HTTP_HOST"), ".") );
if( strlen($subdomain)>0 && $subdomain != "www" ) {
    $_GET["url"] = "user/" . $subdomain . "/" . (isset($_GET["url"]) ? $_GET["url"] : "");
}

 
Fazendo isto, ao acessar www.seusite.seudominio.com.br, você será redirecionado para a página principal dos usuários. Lembrando que você deverá também criar seu arquivo de model em app/models/user.php

Agora veremos o segundo exemplo, que foi o que eu achei mais interessante, que ao invés de redirecionar para um controller específico, redireciona o usuário para a página principal do site. Segue abaixo:

 // em seu arquivo /app/config/bootstrap.php

$url_parts = explode('.', env('HTTP_HOST'));
foreach($url_parts as $part)
{
if(!in_array($part, array('www', 'example', 'com')))
{
$ident = $part;
}
}

 
Com apenas isto, você já pode usar seu subdomínio com o CakePHP 1.2.

Abraços e até a próxima!