Frage

Ich bin versucht, erstellen Sie eine Website mit CodeIgniter.Ich habe mehrere Domänen bedient, die von diesem server, und was ich versuche zu tun ist zu trennen die HTTP-Anforderungen für www.example1.com von denen, die für www.example2.com und dann leiten Sie Sie auf Ihre korrekte Anwendung Ordner.

Sagen, das ist meine Verzeichnisstruktur:

  • system
    • Anwendung
      • beispiel1
      • Beispiel2

So dieser Wunsch

www.example1.com/gallery/

würde dann umgeleitet werden, um exmaple1 Ordner.

Hat jemand einen code-Beispiel für dies zu tun?Natürlich würden Sie brauchen, um mit dem ReWrite-Modul...

Ich sah mich um die Apache-Dokumentation, aber ich konnte nicht überall zu bekommen.Lassen Sie mich wissen, wenn Sie brauchen mehr Informationen auf dieses.

War es hilfreich?

Lösung

Mit Virtualhost (und Alias, Rewrite) sind die primären Antworten, aber wenn Sie denken, Sie werden das Hinzufügen / Entfernen von anderen Hosts die gleiche Einstellung verwenden, dann würde ich betrachten die mod_macro Modul. Dies ist ein Dritte-Modul, das Ihnen helfen, Apache-Konfiguration zu vereinfachen und Kopieren / Einfügen Fehler vermeiden.

Ein einfaches Beispiel mit Ihrem Layout definieren Sie die folgenden Schritte aus:

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

Und dann, wenn eine Website ermöglichen, verwenden Sie die folgende Anweisung:

  

Mit vh80 example1

Welche wird Setup www.example1.com auf das konfigurierte Verzeichnis als root sowie das konfigurierten Protokollverzeichnis verwenden.

Andere Tipps

Was Sie brauchen, ist aufgerufen VirtualHost machen www.example1.com und www.exaplme2.com zeigen Sie jeden in einen anderen Ordner in Ihrem Dateisystem.

Wenn Sie zusätzlich wünschen, haben Sie einen anderen Pfad der URI für Dienste der wichtigsten Inhalte, die Sie haben verschiedene alternativen:

  1. Körperlich erstellen Sie die Ordner und keine weitere änderungen

  2. Körperlich erstellen Sie eine Verknüpfung (benannt Galerie zeigen auf die wichtigsten virtualhost root-Ordner), um die Ordner und die FollowSymLinks option für die VirtualHost

  3. Verwenden Sie ein Alias Richtlinie in der VirtualHost

    Alias /gallery /
    
  4. Verwenden Sie mod_rewrite

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

Die einfachste (CodeIgniter erlaubt) wäre die option 1 oder 2.

Ausschnitt aus der VirtualHost-Dokumentation:

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.

Das ist wirklich zwei Fragen:

  1. , wie man www.example1.com und www.example2.com anders? Die Antwort auf diese ist die Virtual Richtlinie.

  2. Wie / Galerie Punkt machen example1? Dies wird mit der Alias-Richtlinie erfolgen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top