WordPress no usa HTTPS para CSS y JavaScript, y el admin no funciona ¿Cómo solucionarlo?
Recientemente construí un servidor LAMP e instalé WordPress en él. Lo conecté a la web mediante un túnel SSH inverso usando serveo.net.
Decidí añadir SSL y el resto del sitio web parece funcionar bien, pero WordPress sigue fallando cuando intento usar SSL.
Fui a los ajustes generales y cambié las URLs a HTTP en lugar de HTTPS, pero cuando cargo las páginas, en el código fuente las URLs de CSS y JavaScript usan HTTP en lugar de HTTPS, por lo que no cargan.
Además, la parte de wp-admin
ni siquiera carga. ¿Cómo puedo solucionar esto?
He visto varias publicaciones sobre personas con problemas similares, pero ninguna me ayudó.
Verifica dos cosas:
- en la tabla wp-options, las URLs del sitio (en dos lugares) deben ser la URL completa, como en https://www.example.com.
- revisa el archivo htaccess del sitio para asegurar la correcta reescritura de http a https.
Para una regla de htaccess, esta funciona en la mayoría de los casos:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Luego revisa los archivos de tu tema para asegurarte de que cualquier referencia a CSS/JS incluya el protocolo https, no http. La mayoría de los temas bien escritos usan referencias relativas en lugar de absolutas para los archivos a incluir.
También es posible que un plugin esté especificando http en lugar de https.
Usa la pestaña Network en las Herramientas de Desarrollo (generalmente F12 en tu navegador) para revisar cada solicitud y ver de dónde proviene. Si la solicitud es a una carpeta de plugin, entonces revisa el código ahí.

Estoy usando el tema por defecto. twentynieteen,Estoy usando el tema por defecto. twentynieteen. Las entradas de la base de datos son correctas, pero la sección head tiene cosas como <link rel='stylesheet' id='wp-block-library-css' href='http://jtjumper.serveo.net/wp/wp-includes/css/dist/block-library/style.min.css?ver=5.0.3' type='text/css' media='all' /> <link rel='stylesheet' id='wp-block-library-theme-css' href='http://jtjumper.serveo.net/wp/wp-includes/css/dist/block-library/theme.min.css?ver=5.0.3' type='text/css' media='all' />

Si miro el código fuente de la página en mi sitio de prueba (alojado) con el tema 2019, el href para esas declaraciones incluye el protocolo https:. Y tengo el htaccess que se muestra en mi respuesta. Y mi tabla wp-options contiene https://www.example.com , no solo www.example.com . ¿Quizás el tuyo no está configurado así?

No hay suficiente espacio en los comentarios para el código fuente pero este es el enlace de la página https://jtjumper.serveo.net/wp/ mi tabla wp-options tiene ambos, los cuales son https

¿Tienes algún plugin de caché? ¿Tu htaccess está reescribiendo http a https?

los únicos plugins que tengo son akismet, loginizer, really simple ssl y wordfence

Desactiva todos tus plugins (especialmente really simple ssl). Luego configura tu htaccess como se muestra. Después ejecuta un plugin de buscar/reemplazar (me gusta "Better Search and Replace") y busca http://www.tudominio.com y reemplázalo con https://www.tudominio.com.

Esta respuesta resuelve la mayoría de los problemas y espero que ya la hayas revisado.
La razón que encontré para que HTTPS (SSL) no funcione en mi WordPress, incluso después de cambiar:
- El archivo Virtual Host, también conocido como archivo
<web_directory>.conf
dentro de/etc/apache2/sites-available
- El archivo
wp-config
dentro de/var/www/<web_directory>/
- [Para usuarios de AWS EC2] Añadir un balanceador de carga con un certificado SSL para conexiones HTTPS
Si después de hacer todo esto, puedes ver tu sitio web pero sin CSS ni JavaScript funcionando, entonces:
Último paso
Dentro del panel de control de WordPress, ve a
Ajustes>Generales
- En
Dirección de WordPress (URL)
, añadehttps://<tudominio>.com
- En
Dirección del sitio (URL)
, añadehttps://<tudominio>.com
- En
Descubrí que, cuando solo la Dirección del sitio (URL)
está activada con la URL del sitio web, los temas de WordPress redirigen automáticamente hacia los archivos CSS con HTTPS, es decir, https://<DirecciónWordPress>/css/index.css
.
Solo tu dominio tiene acceso SSL, por lo que añadir tu nombre de dominio en Dirección de WordPress (URL)
resolvió los problemas para mí.

Añade este código al archivo wp-config.php
en la carpeta raíz de tu wordpress
.
Además, en los Ajustes Generales
del Panel de Administración, cambia http
por https
para tu siteurl y home.
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';

Tuve o mesmo problema quando hospedei meu site no serviço Azure webapp Linux.
Tente este plugin. Tenha cuidado quando estiver ativo, ele funciona. https://wordpress.org/plugins/jsm-force-ssl/
Este plugin usa filtros nativos do WordPress, em vez do buffer de saída do PHP, para máxima confiabilidade, desempenho e compatibilidade com cache (este plugin não afeta o desempenho do cache), juntamente com redirecionamentos 301 permanentes para melhor SEO (redirecionamentos 301 são considerados melhores para SEO ao migrar de HTTP para HTTPS).
Respeita variáveis de proxy/balanceamento de carga para ambientes de hospedagem grandes:
HTTP_X_FORWARDED_PROTO HTTP_X_FORWARDED_SSL Requisitos:
Seu servidor web deve estar configurado com um certificado SSL e capaz de lidar com requisições HTTPS.
Simplesmente ative o plugin e pronto:
Não há configurações de plugin para ajustar, e nenhuma alteração é feita na sua configuração do WordPress — simplesmente ative ou desative o plugin para habilitar/desabilitar os filtros e redirecionamentos dinâmicos.
