Flávio Silveira Programação & Desenvolvimento

  • BLOG
  • SOBRE

CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.

July 26th, 2009  |  Published in CodeIgniter, Php, Programação em geral  |  2 Comments

Cenário:

Você compra o domínio principal, www.site.com.br. E você vai ter duas versões desse site, uma para cada cliente, que vai usar todas as regras de negócio iguais. A única diferença será o layout. Os clientes pediram os subdomínios branco.site.com.br e preto.site.com.br.

Você pode fazer duas cópias do site em pastas diferentes, mas levando em consideração que eles tem o mesmo CORE, isso não é muito inteligente. Pense se você tiver que fazer uma atualização, você vai ter de mexer em ambos os projetos.

Porque não fazer os subdomínios como links simbólicos para uma mesma pasta? De lá você pode fazer uma verificação. Se for um site, pega o layout branco, se for o outro pega o layout preto.

Problema:

No Codeigniter você define a URL principal do seu projeto nos arquivos de configuração, na variável $config['base_url']. Você não vai ter como colocar os subdomínios lá. O que fazer?

Solução:
Usar a Global $_SERVER.

Essa Global traz informações como o host que você está acessando, o email do administrador da máquina, o software usado, a configuração do TimeOut entre outras.

Para que você mesmo visualize tudo isso faça o seguinte. Abra o seu config.php do CodeIgniter e logo acima de onde está setado a variável $config['base_url'] de um print_r, como abaixo:


|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
|       http://example.com/
|
*
print_r($_SERVER);
die;
$config['base_url']     = "http://www.site.com.br/";


Veja em seu browser todas as opções que você tem nessa global.

Dê uma atenção na primeira opção que vêm no array, o HTTP_HOST. Ele traz o endereço primário que você está acessando. É o que você precisa para setar seu config de acordo com a url que seu visitante acessar.

Dando um print apenas nesse cara,


|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
|       http://example.com/
|
*
print_r($_SERVER['HTTP_HOST']);
die;
$config['base_url']     = "http://www.site.com.br/";

ele retorna o seu subdomínio.

Agora é só fazer uma adaptação.


|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
|       http://example.com/
|
*

$config['base_url']     = "http://" . $_SERVER['HTTP_HOST'];

Seja lá qual subdomínio você acessar, ele vai setar como base_url para você.

Caso você não use subdomínios, esse artifício pode ser usado para você deixar o base_url automatizado para seus projetos.

Espero que tenham curtido a idéia.
Qualquer dúvida só mandar.
Abraços!!

Compartilhe
  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • PDF
  • RSS
  • Twitter
  • email

Posts Relacionados

  • Habilitando Layouts no CodeIgniter (Template Engine) – Parte 2
  • Habilitando Layouts no CodeIgniter (Template Engine) – Parte 1
  • CodeIgniter, Internet Explorer e o tempo de expiração da sessão

Comentários

Feed
  1. Lucas Zerma disse:

    August 11th, 2009 at 06:27 (#)

    Belo post, simples e útil, no tempo em que eu usava o CI nunca pensei nisso, uma grande sacada!
    Sempre tive uma duvída em relação a esse base_url, ele não deveria ser o caminho absoluto para as pastas de assets??

    Valeu e Parabénsss!

  2. Natanael disse:

    December 6th, 2009 at 06:02 (#)

    Muito boa dica, numa linguagem muito simples e facil de se entender, como deve ser todas as dicas e tutoriais. Parabens

Deixe um comentário

Flávio Silveira

Programação & Desenvolvimentominha foto

Rss Logo Twitter Logo

Blogroll

  • Aurélio Marinho Jargas
  • Fábio Tomio
  • Mozart Petter
  • Renie Siqueira
  • Willian Rodriguez

Tags & Categorias

add-ons Apache apple arrays Banco de Dados CodeIgniter complementos Configuração PHP debug erro 500 erros de servidor facilidade formatação via sql Forms framework php geração de cadastros Geração de formulários Internet Explorer não salva session iphone ipod touch Layouts mozart petter mozilla firefox multiple site múltiplos sites com codeIgniter Php postgres Programação em geral reestruturando CodeIgniter Shell smarty SQL Template engine Tempo de sessão codeIgniter Apache (1)
Banco de Dados (3)
Browsers (2)
CodeIgniter (7)
IPhone – Desenvolvimento (2)
JavaScript (1)
Php (9)
Programação em geral (9)
Programação SQL (3)
Screencast (1)
Servidor (1)
Shell Script (1)

WP Cumulus Flash tag cloud by Roy Tanck requires Flash Player 9 or better.



©2010 Flávio Silveira
Powered by WordPress adapted of Gridline Lite of author Graph Paper Press.