Ich habe zwei Subdomains auf dem Server konfiguriert (Haupt- und Staging-Domain) und für Staging werden zwei verschiedene Pfade zurückgegeben. Manchmal wird der korrekte Pfad zurückgegeben ( /var/www/html_staging
), aber manchmal (wenn Sie den Webbrowser ein paar Mal aktualisieren oder wenn Sie auf eine Unterseite gehen) wird die Hauptwebsite zurückgegeben ( /var/www/html
)
Apache 2.4 unter Ubuntu 16.04
Es gibt drei Vhost-Konfigurationen, zwei für die Hauptwebsite und eine für Staging. In der Vhost-Konfiguration für Port 80 gibt es eine Umleitung von http zu https.
000-default.conf:
<VirtualHost *:80>
ServerName website.example.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
ServerAdmin [email protected]
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Standard-SSL.conf:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot /var/www/html
ServerName website.example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCipherSuite ALL:!EXP:!NULL:!ADH:!LOW
SSLCertificateFile /etc/apache2/ssl/*.example.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/*.example.com.key
SSLCACertificateFile /etc/apache2/ssl/bundle.crt
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
staging.conf:
<VirtualHost *:80>
ServerName websitestaging.example.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
ServerAdmin [email protected]
DocumentRoot /var/www/html_staging
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName websitestaging.example.com
ServerAdmin [email protected]
DocumentRoot /var/www/html_staging
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCipherSuite ALL:!EXP:!NULL:!ADH:!LOW
SSLCertificateFile /etc/apache2/ssl/*.example.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/*.example.com.key
SSLCACertificateFile /etc/apache2/ssl/bundle.crt
</VirtualHost>
</IfModule>
Ausgabe vonapache2ctl -S
VirtualHost configuration:
*:80 is a NameVirtualHost
default server website.example.com (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost website.example.com (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost websitestaging.example.com (/etc/apache2/sites-enabled/staging.conf:1)
*:443 is a NameVirtualHost
default server website.example.com (/etc/apache2/sites-enabled/default-ssl.conf:2)
port 443 namevhost website.example.com (/etc/apache2/sites-enabled/default-ssl.conf:2)
port 443 namevhost websitestaging.example.com (/etc/apache2/sites-enabled/staging.conf:15)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
Was ist der Grund für dieses Verhalten? Warum lädt Staging die Website nur manchmal vom richtigen Pfad und manchmal vom Hauptpfad? Die Hauptwebsite wurde korrekt geladen, dies betrifft nur Staging.
Antwort1
Nur für den Fall, dass Sie das gleiche Problem haben wie oben beschrieben. Starten Sie einfach den gesamten Server neu, nicht nur Apache. Nach dem Neustart des Servers funktioniert alles ordnungsgemäß. Es gab wahrscheinlich eine Art Cache oder Konfiguration, die nicht ordnungsgemäß entfernt wurde und den gesamten Server beeinträchtigte.