Când folosești HTTPS, WordPress nu utilizează HTTPS pentru CSS și JavaScript, iar adminul nu funcționează. Cum pot rezolva această problemă?
Recent am construit un server LAMP și am instalat WordPress pe el. L-am conectat la internet prin tunel invers SSH folosind serveo.net.
Am decis să adaug SSL și restul site-ului pare să funcționeze bine, dar WordPress continuă să aibă probleme când încerc să folosesc SSL.
Am mers în setările generale și am schimbat URL-urile în HTTP în loc de HTTPS, dar când încarc paginile, în codul sursă URL-urile pentru CSS și JavaScript folosesc HTTP în loc de HTTPS, așa că nu se încarcă.
Apoi partea de wp-admin
nici măcar nu se încarcă. Cum pot rezolva această problemă?
Am căutat multe articole despre persoane care au probleme similare, dar niciunul nu a ajutat.
Verifică două lucruri:
- în tabelul wp-options, URL-urile site-ului (în două locuri) trebuie să fie URL-ul complet, ca în https://www.example.com.
- verifică fișierul htaccess al site-ului pentru rescrierea corectă de la http la https.
Pentru o regulă htaccess, aceasta funcționează în majoritatea cazurilor:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Apoi verifică fișierele temei pentru a te asigura că orice referință la CSS/JS include protocolul https, nu http. Majoritatea temelor bine scrise vor folosi referințe relative în loc de absolute pentru fișierele incluse.
Este posibil și ca un plugin să specifice http în loc de https.
Folosește fila Network din Instrumentele pentru Dezvoltatori (de obicei F12 în browser) pentru a verifica fiecare cerere și a vedea de unde vine. Dacă cererea este către un folder de plugin, verifică codul din acel loc.

Folosesc tema implicită. twentynieteen,Folosesc tema implicită. twentynieteen. Intrările din baza de date sunt corecte, dar secțiunea head conține elemente precum <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' />

Dacă mă uit la codul sursă al paginii pe site-ul meu de test (găzduit) cu tema 2019, href-ul pentru acele declarații include protocolul https:. Și am htaccess-ul afișat în răspunsul meu. Și tabelul wp-options conține https://www.example.com , nu doar www.example.com . Poate al tău nu este configurat astfel?

Nu este suficient spațiu în comentarii pentru sursă, dar acesta este linkul paginii https://jtjumper.serveo.net/wp/ tabelul meu wp-options conține ambele, ambele fiind https

Aveți vreun plugin de caching? Fișierul dvs. htaccess rescrie http în https?

singurele plugin-uri pe care le am sunt akismet, loginizer, realy simple ssl și wordfence

Dezactivați toate plugin-urile (în special really simple ssl). Apoi setați fișierul htaccess așa cum este arătat. Apoi rulați un plugin de căutare/înlocuire (eu prefer "Better Search and Replace") și căutați http://www.domeniuldvs.com și înlocuiți-l cu https://www.domeniuldvs.com .

Acest răspuns rezolvă majoritatea problemelor și sper că l-ai parcurs deja.
Motivul pentru care HTTPS (SSL) nu funcționa pe WordPress-ul meu, chiar și după modificările:
- Fișierul Virtual Host, adică
<web_directory>.conf
din/ect/apache2/sites-available
- Fișierul
wp-config
din/var/www/<web_directory>/
- [Pentru utilizatorii AWS EC2] Adăugarea unui Load Balancer cu un certificat SSL pentru conexiuni HTTPS
După ce faci toate acestea, dacă poți vizualiza site-ul fără CSS și JavaScript funcțional, atunci:
Ultimul pas
În Panoul de control WordPress, mergi la
Settings>General
- Sub
WordPress Address (URL)
, adaugăhttps://<yourdomain>.com
- Sub
Site Address (URL)
, adaugăhttps://<yourdomain>.com
- Sub
Am descoperit că, atunci când doar Site Address (URL)
este activat cu URL-ul site-ului, temele WordPress redirecționează automat către fișierele CSS cu HTTPS, adică https://<WordPressAddress>/css/index.css
.
Doar domeniul tău are acces SSL, deci adăugarea numelui domeniului la WordPress Address (URL)
a rezolvat problemele pentru mine.

Adăugați acest cod în fișierul wp-config.php
din folderul principal wordpress
.
De asemenea, în Setări Generale
din Panoul de Administrare, schimbați http
în https
pentru siteurl și home.
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';

Am avut aceeași problemă când am găzduit site-ul meu pe serviciul Azure webapp pentru Linux.
Încearcă acest plugin. Ai grijă când este activ, funcționează. https://wordpress.org/plugins/jsm-force-ssl/
Acest plugin utilizează filtre native WordPress, în loc de bufferul de ieșire PHP, pentru fiabilitate maximă, performanță și compatibilitate cu caching-ul (acest plugin nu afectează performanța caching-ului), împreună cu redirecționări permanente 301 pentru cel mai bun SEO (redirecționările 301 sunt considerate cele mai bune pentru SEO când treci de la HTTP la HTTPS).
Respectă variabilele proxy / load-balancing pentru medii de găzduire mari:
HTTP_X_FORWARDED_PROTO HTTP_X_FORWARDED_SSL Cerințe:
Serverul tău web trebuie să fie configurat cu un certificat SSL și să poată gestiona cereri HTTPS.
Pur și simplu activează plugin-ul și ai terminat:
Nu există setări de plugin de ajustat și nici modificări aduse configurației WordPress — pur și simplu activează sau dezactivează plugin-ul pentru a activa / dezactiva filtrele și redirecționările dinamice.
