Comment faire savoir à Apache quel répertoire d'applications utiliser pour différents domaines?

StackOverflow https://stackoverflow.com/questions/1025587

Question

J'essaie de créer un site avec CodeIgniter. Plusieurs serveurs de ce serveur seront servis. Ce que j'essaie de faire, c'est de séparer les demandes HTTP de www.example1.com de celles de www.example2.com, puis de les rediriger vers les dossiers de leurs applications respectives.

Dites que ceci est ma structure de répertoire:

  • système
    • application
      • exemple1
      • exemple2

Donc, cette demande

www.example1.com/gallery/

serait alors redirigé vers le dossier exmaple1.

Quelqu'un a-t-il un exemple de code pour cela? Évidemment, vous devrez utiliser le module ReWrite ...

J'ai parcouru la documentation Apache mais je ne pouvais aller nulle part. Faites-moi savoir si vous avez besoin de plus d'informations à ce sujet.

Était-ce utile?

La solution

Utilisation de VirtualHost (et Alias, Rewrite) sont les réponses principales, mais si vous pensez que vous allez ajouter / supprimer d'autres hôtes en utilisant la même configuration, je considérerais alors le module mod_macro . Ceci est un module tiers qui vous aidera à simplifier la configuration d’Apache et à éviter les erreurs de copier / coller.

Un exemple simple avec votre mise en page, définissez les éléments suivants:

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

Et lors de l'activation d'un site, utilisez la directive suivante:

  

Utilisez vh80 exemple1

Qui va configurer www.example1.com pour utiliser le répertoire configuré en tant que racine ainsi que le répertoire de journalisation configuré.

Autres conseils

Ce dont vous avez besoin s'appelle VirtualHost pour créer www.example1. .com et www.exaplme2.com pointent chacun vers un dossier différent de votre système de fichiers.

Si vous souhaitez en outre avoir un chemin différent dans l'URI pour servir le contenu principal, vous avez différentes possibilités:

  1. Créez physiquement le dossier et ne modifiez plus

  2. Créez physiquement un lien (la galerie nommée pointant vers le dossier racine virtualhost principal) vers le dossier et utilisez le option FollowSymLinks pour le VirtualHost

  3. Utilisez une directive Alias ?? dans VirtualHost

    Alias /gallery /
    
  4. Utilisez mod_rewrite

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

Le plus simple (en autorisant CodeIgniter) serait l'option 1 ou 2.

Extrait de la documentation de 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.

Ce sont vraiment deux questions:

  1. comment rendre www.example1.com et www.example2.com différents? La réponse à cette question est la directive VirtualHost .

  2. Comment faire en sorte que / gallery pointe vers exemple1? Ceci est fait avec la directive Alias.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top