Pergunta

Eu estou tentando criar um site com CodeIgniter. Vou ter vários domínios servidos a partir deste servidor, e o que eu estou tentando fazer é separar as solicitações HTTP para www.example1.com daqueles para www.example2.com e depois redirecioná-los para as suas pastas de aplicativos corretos.

Say esta é a minha estrutura de diretório:

    sistema
    • Aplicação
      • example1
      • example2

Assim, este pedido

www.example1.com/gallery/

passaria então a ser redirecionado para a pasta exmaple1.

Alguém tem alguma exemplo de código para fazer isso? Obviamente, você precisa usar a reescrever módulo ...

Olhei ao redor da documentação do Apache, mas eu não poderia começar em qualquer lugar. Deixe-me saber se você precisar de mais informações sobre isso.

Foi útil?

Solução

Usando VirtualHost (e Alias, Rewrite) são as respostas primárias, mas se você acha que vai ser a adição / remoção de outros hosts usando a mesma configuração, então eu iria considerar o mod_macro módulo. Este é um módulo de terceiros que irá ajudá-lo a simplificar apache configuração e evitar copiar / colar erros.

Um exemplo simples com o seu layout, defina o seguinte:

<Macro vh80 name>
 <VirtualHost *:80>
   DocumentRoot /system/application/$name
   ServerName www.$name.com
   CustomLog /system/application/$name/logs/access.log virtcommon
   ErrorLog /system/application/$name/logs/error.log
 </VirtualHost>
</Macro>

E, em seguida, ao habilitar um site, use a seguinte diretiva:

Use vh80 example1

Qual configuração vontade www.example1.com para usar o diretório configurado como raiz, bem como o diretório de registro configurado.

Outras dicas

O que você precisa é chamado VirtualHost fazer www.example1 .com e www.exaplme2.com apontar cada um para uma pasta diferente no seu sistema de arquivos.

Se você também deseja ter um caminho diferente na URI para servir o conteúdo principal você tem várias alternativas:

  1. Fisicamente criar a pasta e fazer nenhuma outra alteração

  2. Fisicamente criar um link (chamado galeria apontando para a pasta virtualhost raiz principal) para a pasta e usar o opção FollowSymLinks para o VirtualHost

  3. Use um Alias ?? directiva no VirtualHost

    Alias /gallery /
    
  4. Use mod_rewrite

    RewriteRule /gallery/(.*) /$1 [QSA]
    

O mais simples (CodeIgniter permitir) seria a opção 1 ou 2.

trechos da documentação VirtualHost:

Running several name-based web sites on a single IP address.

Your server has a single IP address, and multiple aliases (CNAMES) 
point to this machine in DNS. You want to run a web server for 
www.example.com and www.example.org on this machine.

Note

Creating virtual host configurations on your Apache server does 
not magically cause DNS entries to be created for those host 
names. You must have the names in DNS, resolving to your IP 
address, or nobody else will be able to see your web site. 
You can put entries in your hosts file for local testing, 
but that will work only from the machine with those hosts 
entries.

Server configuration

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.example.com

# Other directives here

</VirtualHost>

<VirtualHost *:80>
DocumentRoot /www/example2
ServerName www.example.org

# Other directives here

</VirtualHost>

The asterisks match all addresses, so the main server serves no requests. 
Due to the fact that www.example.com is first in the configuration file, 
it has the highest priority and can be seen as the default or primary 
server. That means that if a request is received that does not match 
one of the specified ServerName directives, it will be served by this
first VirtualHost.

Esta é realmente duas perguntas:

  1. como fazer www.example1.com e www.example2.com diferente? A resposta a esta é a VirtualHost directiva.

  2. Como fazer / galeria ponto de example1? Isso é feito com a directiva Alias.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top