Wordpress auf DigitalOcean http://example.com funktioniert nicht, aber alle anderen Kombinationen von https://example.com und http://www.example.com sind

Wordpress auf DigitalOcean http://example.com funktioniert nicht, aber alle anderen Kombinationen von https://example.com und http://www.example.com sind

Das ist eine schwierige Frage zum Googeln oder sogar zum Betiteln.

Ich kann meine Wordpress-Site erfolgreich folgendermaßen aufrufen:

http://www.example.com/

https://www.example.com/

https://example.com/

Aber das schlägt fehl:

http://example.com/

Wenn Sie versuchen, von dieser Adresse aus auf die Domäne zuzugreifen, wird eine blaue Webseite mit dem Logo von DigitalOcean angezeigt. Auf der Seite sehen Sie ein Bild eines Hais und die folgende Fehlermeldung: „Bitte melden Sie sich per SSH bei Ihrem Droplet an, um Ihre LAMP-Installation zu konfigurieren.“

Ich habe ein DigitalOcean-Droplet mit Ubuntu 16.04 und Apache 2 sowie mehreren Domänen. Eine der Domänen enthält eine Wordpress-Site, die von einem anderen Host migriert wurde. Die Domäne ist genauso konfiguriert wie alle meine anderen Domänen, einschließlich eines über letsencrypt installierten Zertifikats.

Ich glaube nicht, dass mein Problem mit dem Zertifikat zusammenhängt. Ich glaube, das Problem hat mit Wordpress zu tun, denn die anderen Websites auf meinem Server funktionieren unter allen 4 Bedingungen (http:// und https:// und www und nicht-www) einwandfrei.

Hier ist meine (anonymisierte) .conf-Datei:

    <VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /var/www/example
    <Directory />
            Options FollowSymLinks
            AllowOverride All
    </Directory>
    <Directory /var/www/example>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <IfModule mod_dir.c>
        DirectoryIndex index.php index.pl index.cgi index.html index.xh$
    </IfModule>

RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

und hier ist mein .htaccess-Ordner innerhalb von /var/www/example

        # BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
#test
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# END WordPress

und hier sind meine DNS-Einstellungen, eingefügt und anonymisiert:

        CNAME   
ftp.example.com is an alias of example.com. 

A   
example.com directs to 159.65.36.136

CNAME
www.example.com is an alias of example.com. 

NS  
example.com directs to ns1.digitalocean.com.    

NS  
example.com directs to ns2.digitalocean.com.    

NS  
example.com directs to ns3.digitalocean.com.    

und hier ist meine Ausgabe von apache2ctl -S

            VirtualHost configuration:
*:443                  is a NameVirtualHost
        default server othersite1.com (/etc/apache2/sites-enabled/othersite1.com-le-ssl.conf:2)
        port 443 namevhost othersite1.com (/etc/apache2/sites-enabled/othersite1.com-le-ssl.conf:2)
                alias www.othersite1.com
        port 443 namevhost othersite2.co (/etc/apache2/sites-enabled/othersite2.co-le-ssl.conf:2)
                alias www.othersite2.co
        port 443 namevhost example.com (/etc/apache2/sites-enabled/example.com-le-ssl.conf:2)
                alias www.example.com
        port 443 namevhost othersite3.com (/etc/apache2/sites-enabled/othersite3.com-le-ssl.conf:2)
                alias www.othersite3.com
        port 443 namevhost othersite4.com (/etc/apache2/sites-enabled/othersite4.com-le-ssl.conf:2)
                alias www.othersite4.com
        port 443 namevhost othersite5.net (/etc/apache2/sites-enabled/othersite5.net-le-ssl.conf:2)
                alias www.othersite5.net
        port 443 namevhost othersite6.com (/etc/apache2/sites-enabled/othersite6.com-le-ssl.conf:2)
                alias www.othersite6.com
*:80                   is a NameVirtualHost
        default server example.com (/etc/apache2/sites-enabled/000-default.conf:1)
        port 80 namevhost example.com (/etc/apache2/sites-enabled/000-default.conf:1)
        port 80 namevhost othersite1.com (/etc/apache2/sites-enabled/othersite1.com.conf:1)
                alias www.othersite1.com
        port 80 namevhost othersite2.co (/etc/apache2/sites-enabled/othersite2.co.conf:1)
                alias www.othersite2.co
        port 80 namevhost example.com (/etc/apache2/sites-enabled/example.com.conf:1)
                alias www.example.com
        port 80 namevhost othersite3.com (/etc/apache2/sites-enabled/othersite3.com.conf:1)
                alias www.othersite3.com
        port 80 namevhost othersite4.com (/etc/apache2/sites-enabled/othersite4.com.conf:1)
                alias www.othersite4.com
        port 80 namevhost othersite5.net (/etc/apache2/sites-enabled/othersite5.net.conf:1)
                alias www.othersite5.net
        port 80 namevhost othersite6.com (/etc/apache2/sites-enabled/othersite6.com.conf:1)
                alias www.othersite6.com
    ServerRoot: "/etc/apache2"
    Main DocumentRoot: "/var/www/html"
    Main ErrorLog: "/var/log/apache2/error.log"
    Mutex rewrite-map: using_defaults
    Mutex ssl-stapling-refresh: using_defaults
    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
    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

Antwort1

Möglichkeit Nr. 1

Es sieht so aus, als ob Ihr Standard-VirtualHost für *:80, wenn Sie die Konfigurationsdatei verwenden, mit namevhost oben in der Ausgabe 000-default.confübereinstimmt ...;example.com

VirtualHost configuration:
    default server example.com (/etc/apache2/sites-enabled/000-default.conf:1)
    port 80 namevhost example.com (/etc/apache2/sites-enabled/000-default.conf:1)

wohingegen Sie möchten, dass es hier übereinstimmt;

    port 80 namevhost example.com (/etc/apache2/sites-enabled/example.com.conf:1)
    alias www.example.com

Was wahrscheinlich passiert, ist, dass die Seite mit dem Text „Bitte melden Sie sich per SSH bei Ihrem Droplet an, um Ihre LAMP-Installation zu konfigurieren.“ der Standardinhalt von ist /var/www/html.

Daher würde ich versuchen, es zu entfernen /etc/apache2/sites-enabled/000-default.confund sicherzustellen, dass es example.commit dem richtigen VHost übereinstimmt.

Möglichkeit Nr. 2

Überprüfen Sie Ihre Einstellungen in wp-config.php. Sie sollten mit dem übereinstimmen, worauf Ihre Weiterleitungen letztendlich verweisen.

define('WP_HOME','https://example.com');
define('WP_SITEURL','https://example.com');

Dies verursacht manchmal Probleme mit WordPress, wenn es nicht mit den Anforderungen von Apache übereinstimmt.

Weitere Fehlerbehebung

Die andere Sache ist, dass Sie die Konfiguration für einhttp://example.com:80/Website;

 <VirtualHost *:80>
ServerName example.com 
...
</VirtualHost>

Allerdings sieht es so aus, als würde die Umschreiberegel jede Anfrage an https:// zurückschicken.

RewriteCond %{SERVER_NAME} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Daher müssten wir wahrscheinlich auch die https-Konfiguration sehen.

Außerdem sollten Sie wahrscheinlich die Ausgabe von access.log und error.log zu einer bestimmten Anforderung einfügen, um zu sehen, welche Weiterleitungen tatsächlich stattgefunden haben.

Wenn Sie das Problem immer noch nicht sehen, können Sie auch die Protokollierung des erneuten Schreibens aktivieren.

 LogLevel alert rewrite:trace3

und verfolgen Sie dann das Protokoll auf Anfragen.

tail -f error_log|fgrep '[rewrite:' 

verwandte Informationen