
Ich verwende Apache 2.4 unter Ubuntu 18.04
Ich habe das Problem, dass alle Adressen, die ich in die Browserleiste eingebe, umgeleitet werden aufeinsder beiden von mir konfigurierten Websites (in diesem Fall other-site
wird mir jedes Mal, wenn ich eine Adresse eingebe, zu der weitergeleitet werden soll, nur die Website unter angezeigt jekyll
.)
Zum Beispiel:
- beim Tippen
jekyll
im Browser wird mir wie erwartet die Jekyll-Website angezeigt - Tippen
other-site
im Browserzeigt mir auch die Jekyll-Website, obwohl ein anderer VirtualHost auf diesen Namen lauscht
Ich habe diesezwei getrennte Standorteals VHosts konfiguriert unter /etc/apache2/sites-available
(beideermöglichtüber a2ensite
)
jekyll.conf
<VirtualHost *:80> DirectoryIndex index.html DocumentRoot /var/www/jekyll/_site LimitRequestFieldSize 48000 <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/jekyll/_site> AllowOverride All Order allow,deny allow from all </Directory> <Directory /var/www/jekyll/_site/> Order allow,deny allow from all </Directory> ServerName jekyll ServerName http://jekyll ServerName http://localhost/jekyll ServerAdmin webmaster@localhost </VirtualHost>
andere-site.conf
<VirtualHost *:80> DirectoryIndex index.html DocumentRoot /var/www/other-site/_site LimitRequestFieldSize 48000 <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/other-site/_site> AllowOverride All Order allow,deny allow from all </Directory> <Directory /var/www/other-site/_site/> Order allow,deny allow from all </Directory> ServerName other-site ServerName http://other-site ServerName http://localhost/other-site ServerAdmin webmaster@localhost </VirtualHost>
Ich habe außerdem diese Einträge hinzugefügt, /etc/hosts
damit localhost zu jeder Site umgeleitet wird:
127.0.0.1 localhost
127.0.0.1 localhost/jekyll
127.0.0.1 localhost/other-site
127.0.0.1 jekyll
127.0.0.1 other-site
127.0.1.1 felipe-Inspiron-7559
Antwort1
Das ServerName
Attribut in Ihren Apache-Konfigurationsdateien muss nicht wiederholt werden, da jede nachfolgende Zeile die vorherigen ersetzt.
Stattdessen können Sie „ ServerName
with ServerAlias
“ wie folgt verwenden:
ServerName jekyll
ServerAlias jekyll.local *.jekyll *.jekyll.local
Beachten Sie, dass dies unlogisch ist:
127.0.0.1 localhost/jekyll
127.0.0.1 localhost/other-site
Dies sind keine Domänen (oder Subdomänen), sondern Pfade unter localhost
. Daher localhost
wird nur beachtet. Aus diesem Grund habe ich es, wie oben erwähnt, nicht in die Apache-Konfiguration aufgenommen.
Wenn Sie dies im Hinterkopf behalten, können SiedreiApache-Konfigurationsdateien:
⇢000-jekyll.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName jekyll
ServerAlias jekyll.local *.jekyll *.jekyll.local
DirectoryIndex index.html
DocumentRoot /var/www/jekyll/_site
LimitRequestFieldSize 48000
<Directory /var/www/jekyll/_site>
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/jekyll-error.log
CustomLog ${APACHE_LOG_DIR}/jekyll-access.log combined
</VirtualHost>
⇢001-other.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName other-site
ServerAlias other-site.local *.other-site *.other-site.local
DirectoryIndex index.html
DocumentRoot /var/www/other-site/_site
LimitRequestFieldSize 48000
<Directory /var/www/other-site/_site>
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/other-error.log
CustomLog ${APACHE_LOG_DIR}/other-access.log combined
</VirtualHost>
⇢999-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName localhost
ServerAlias *.localhost * *.*
DirectoryIndex index.html
DocumentRoot /var/www
LimitRequestFieldSize 48000
<Directory /var/www>
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/local-error.log
CustomLog ${APACHE_LOG_DIR}/local-access.log combined
</VirtualHost>
Apache verarbeitet den Datenverkehr basierend auf der Reihenfolge der Konfigurationsdateien. Alle Domänen, die mit den in angegebenen übereinstimmen, 000-jekyll.conf
werden also von dieser Datei verarbeitet. Wenn keine Übereinstimmungen gefunden werden, 001-other.conf
wird überprüft. Wenn keine Übereinstimmungen gefunden werden, 999-default.conf
wird verwendet. Beachten Sie das ServerAlias
in der 999-default.conf
Datei und wie es auf weit geöffneten Platzhaltern basiert. Dies bedeutet, dass es als Sammelbegriff für den Datenverkehr behandelt wird, der nicht mit den definierten Konfigurationsdateien übereinstimmt.
Notiz:Die Apache-Konfigurationsdateien wurden optimiert, um irrelevante Directory
Blöcke zu eliminieren und jedem Host die Verwendung eigener Fehlerprotokolle zu ermöglichen.