Wordpress en DigitalOcean http://example.com no funciona, pero todas las demás combinaciones de https://example.com y http://www.example.com sí.

Wordpress en DigitalOcean http://example.com no funciona, pero todas las demás combinaciones de https://example.com y http://www.example.com sí.

Esta es una pregunta difícil de buscar en Google, o incluso un título.

Puedo acceder a mi sitio de Wordpress con éxito usando esto:

http://www.ejemplo.com/

https://www.ejemplo.com/

https://ejemplo.com/

Pero esto falla:

http://ejemplo.com/

Si intenta acceder al dominio desde esta dirección, verá una página web azul con la marca DigitalOcean, con una imagen de un tiburón y el siguiente error: "Inicie sesión en su droplet a través de SSH para configurar su instalación de LAMP".

Tengo un droplet de DigitalOcean que ejecuta Ubuntu 16.04 con Apache 2 y varios dominios. Uno de los dominios tiene un sitio de Wordpress que se migró desde otro host. El dominio está configurado igual que todos mis demás dominios, incluido un certificado instalado a través de letsencrypt.

No creo que mi problema esté en el certificado. Creo que el problema tiene que ver con Wordpress, porque los otros sitios en mi servidor funcionan bien en las 4 condiciones (http:// y https:// y www y no www)

Aquí está mi archivo .conf (anónimo):

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

y aquí está mi carpeta .htaccess dentro de /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

y aquí están mis configuraciones de DNS, pegadas y anonimizadas:

        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.    

y aquí está mi salida de 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

Respuesta1

Posibilidad #1

Parece que su VirtualHost predeterminado para *:80, usar el archivo de configuración 000-default.confcoincide con el nombrevhost example.comen la parte superior de la salida...;

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)

mientras que usted quiere que coincida aquí;

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

Lo que probablemente esté sucediendo es que aparece la página con el texto "Inicie sesión en su droplet a través de SSH para configurar su instalación de LAMP". es el contenido predeterminado de /var/www/html.

Así que intentaría eliminarlo /etc/apache2/sites-enabled/000-default.confy asegurarme de que example.comcoincida con el VHost correcto.

Posibilidad #2

Verifique su configuración en wp-config.php, debe coincidir con lo que finalmente apuntan sus redireccionamientos;

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

Esto a veces causa problemas con WordPress, cuando no coincide con lo que Apache quiere.

Más solución de problemas

La otra cosa es que has pegado la configuración de unhttp://ejemplo.com:80/sitio;

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

Sin embargo, parece que la regla de reescritura rebotaría todas las solicitudes a https://

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

Entonces probablemente también necesitaremos ver la configuración https.

Además, probablemente deberías pegar el resultado de access.log y error.log correspondiente a una solicitud específica, para ver qué redirecciones ocurrieron realmente.

Además, si aún no puede ver el problema, puede activar el registro de reescritura;

 LogLevel alert rewrite:trace3

y luego rastrear el registro de solicitudes;

tail -f error_log|fgrep '[rewrite:' 

información relacionada