Domanda

Sto cercando di creare un sito con CodeIgniter. Avrò più domini serviti da questo server e quello che sto cercando di fare è separare le richieste HTTP per www.example1.com da quelle per www.example2.com e quindi reindirizzarle alle cartelle delle applicazioni corrette.

Dire che questa è la mia struttura di directory:

  • Sistema
    • applicazione
      • esempio1
      • example2

Quindi questa richiesta

www.example1.com/gallery/

verrebbe quindi reindirizzato alla cartella exmaple1.

Qualcuno ha qualche esempio di codice per farlo? Ovviamente dovresti usare il modulo ReWrite ...

Ho guardato intorno alla documentazione di Apache ma non sono riuscito ad arrivare da nessuna parte. Fammi sapere se hai bisogno di ulteriori informazioni al riguardo.

È stato utile?

Soluzione

L'uso di VirtualHost (e Alias, Rewrite) sono le risposte principali, ma se pensi che aggiungerai / rimuoverai altri host usando la stessa configurazione, prenderei in considerazione mod_macro . Questo è un modulo di terze parti che ti aiuterà a semplificare la configurazione di Apache ed evitare errori di copia / incolla.

Un semplice esempio con il layout, definire quanto segue:

<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>

Quindi, quando si abilita un sito, utilizzare la seguente direttiva:

  

Usa vh80 esempio1

Che imposterà www.example1.com per utilizzare la directory configurata come root e la directory di registrazione configurata.

Altri suggerimenti

Quello che ti serve è chiamato VirtualHost per creare www.example1 .com e www.exaplme2.com indicano ciascuno una cartella diversa nel file system.

Se desideri inoltre avere un percorso diverso nell'URI per la pubblicazione del contenuto principale, hai diverse alternative:

  1. Crea fisicamente la cartella e non apportare ulteriori modifiche

  2. Crea fisicamente un link (chiamato gallery che punta alla cartella principale del virtualhost principale) alla cartella e usa opzione FollowSymLinks per VirtualHost

  3. Utilizza una direttiva Alias ?? in VirtualHost

    Alias /gallery /
    
  4. Usa mod_rewrite

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

Il più semplice (permettendo CodeIgniter) sarebbe l'opzione 1 o 2.

Snippet dalla documentazione di 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.

Questa è in realtà due domande:

  1. come differenziare www.example1.com e www.example2.com? La risposta a questa è la VirtualHost direttiva

  2. Come fare in modo che / gallery punti ad esempio1? Questo viene fatto con la direttiva Alias.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top