Avertizări de conținut mixt după schimbarea adresei site-ului de la HTTP la HTTPS
Am schimbat adresa site-ului meu de la HTTP la HTTPS prin simpla modificare a URL-ului în Setări -> General (Adresa WordPress și Adresa site-ului). Nu am nicio problemă în zona de administrare, totul funcționează perfect.
Însă în partea publică a site-ului: există multe probleme de "conținut mixt", astfel încât Firefox afișează avertizarea că site-ul nu este securizat. Am observat (prin vizualizarea sursei) că aproape toate imaginile încărcate în galeria media sunt încă "randate" cu HTTP în loc de HTTPS.
Ce pot face pentru a servi imaginile, fonturile etc. cu un URL HTTPS?
[ACTUALIZARE] Am descoperit că unele probleme pot fi rezolvate prin editarea a două fișiere de temă care conțineau "http://" hardcodat. Problema principală rămâne cu imaginile - dacă nu doriți să modificați baza de date, aparent nu există o soluție simplă.
Acest lucru se întâmplă pentru că WordPress salvează URL-urile în conținut în mod absolut implicit (adică, în baza de date, URL-urile sunt salvate ca http://example.com). Pentru a remedia această problemă, va trebui să efectuați o căutare și înlocuire în baza de date pentru a corecta aceste erori.
Eu prefer să folosesc pluginul Better Search Replace deoarece are o funcție utilă care vă permite să testați căutarea/înlocuirea într-un mod de probă (dry run). Există multe alte metode de căutare/înlocuire și puteți face modificările și în PhpMyAdmin, dar voi oferi instrucțiuni pentru utilizarea pluginului Better Search Replace.
Presupunând că folosiți Better Search Replace:
- FACETI O COPIE DE SIGURANȚĂ A BAZEI DE DATE! Mereu, mereu, mereu. Puteți folosi orice instrument doriți pentru asta (UpdraftPlus, dump (NU DROP) din PhpMyAdmin sau direct din MySQL sunt toate opțiuni valide).
- Accesați Tools > Better Search Replace
- Adăugați versiunea fără SSL a site-ului dvs. în câmpul de căutare (de ex.
http://example.com
) și versiunea SSL a site-ului în câmpul de înlocuire - Selectați tabelele pe care doriți să le actualizați. Cel mai probabil, veți avea nevoie doar de tabelele
wp_posts
șiwp_postmeta
, dar le puteți adăuga pe toate dacă doriți. Doar că știți că poate dura mai mult și poate expira în funcție de specificațiile serverului. - Efectuați un dry run (test fără modificări) pentru a vă asigura că funcționează
- Dacă funcționează, debifați opțiunea dry run și rulați procesul pentru real.
- Verificați site-ul pentru a confirma că erorile au fost remediate. Dacă da, perfect!
Notă: De fiecare dată când efectuați o căutare/înlocuire, există riscul să provocați probleme masive site-ului. De aceea, pasul unu: faceți o copie de siguranță. Dacă ceva nu merge bine, aveți o modalitate de a vă restaura datele.

Am actualizat recent la SSL și Better Search Replace a fost salvator. Faceți backup la baza de date înainte să îl folosiți.

@Ian Sunt foarte surprins și extrem de nemulțumit de WP dacă o astfel de soluție este necesară

Da, modul în care WP salvează URL-urile, în special pentru resurse, este super enervant.

Deci, ce (naiba) face WP când înlocuiești http cu https în Setări > General?

am votat împotrivă pentru că simpla înlocuire a textului în postări este prea mult pe de o parte (dacă ai un link către o adresă http a unui pdf pe site-ul tău și vrei să rămână http), și s-ar putea să nu fie suficient (dacă încorporezi o imagine prin http de pe un alt site).

@MarkKaplun Sunt foarte surprins de comportamentul WP în acest caz: presupun că același lucru se întâmplă chiar dacă iei baza de date și muți întregul site pe un alt domeniu. Sincer, necesită prea multă muncă

@3000 în realitate, oamenii care îți spun „doar folosește Let's Encrypt” sau ceva de genul ăsta, îți vând doar iluzii. HTTPS este complicat din diverse motive, de exemplu poate ai nevoie să folosești o bibliotecă JS care este servită doar pe HTTP și care nu va mai funcționa pe HTTPS (de fapt, o problemă pe care a avut-o un client al meu). Pentru a fi complet HTTPS, nu este suficient să gestionezi corect URL-urile interne, ci și cele ale resurselor externe folosite pe site-ul tău, care de obicei ar putea necesita doar schimbarea HTTP în HTTPS...

...(dacă este suportat), dar pentru unele dintre ele va trebui să folosești un URL complet diferit pentru a obține aceeași resursă. Concluzia este că nu este deloc banal și nu există o soluție universală, așadar chiar dacă nucleul ar fi vrut să o gestioneze, practic nu există o modalitate corectă de a o face pentru toată lumea. Personal, eu ignor pur și simplu avertismentele de conținut mixt, implicațiile lor de securitate sunt neglijabile dacă te autentifici prin HTTPS și este extrem de greu să le cureți pe toate.

schimbarea imaginilor pentru a folosi protocol neutru este probabil cea mai ușoară și cea mai mare victorie pe care o poți obține pe acest front, și o poți face cu un mic fragment de cod sau prin înlocuirea prin căutare, dar unul care vizează în mod specific URL-urile media.

@MarkKaplun 99% din problema mea actuală este legată de imagini: am găsit câteva URL-uri HTTP pentru resurse externe (JS și fonturi), dar am verificat și pot fi înlocuite ușor cu HTTPS. Dezvolt (alte lucruri) de ani de zile și, ca developer, simt că această problemă cu calea este cu adevărat ceva "surprinzător", ca să nu spun incredibil.

@300 în parte, acesta este rezultatul faptului că nucleul nu a finalizat niciodată planul (foarte vechi acum) de a avea o migrare către alt URL rădăcină ca parte a nucleului. Dacă ar exista un astfel de instrument, cel puțin o parte din durere nu ar mai fi acolo.

@Mark Kaplun De fapt, inițial am crezut că este doar o problemă de editare a URL-ului în setările generale (și bineînțeles de redirecționare către HTTPS), dar m-am înșelat.

Cu siguranță nu înțeleg votul negativ. Acesta este un răspuns legitim, chiar dacă nu este ceea ce spera OP. Având în vedere importanța SSL în zilele noastre, în special pentru SEO, aceasta este o metodă bună de a remedia acele avertismente de conținut mixt. Există și alte răspunsuri la această întrebare care nu folosesc metoda de căutare și înlocuire, grozav! Întregul scop al acestui site web este de a oferi întrebări și răspunsuri de înaltă calitate pentru a ne ajuta reciproc!

@Ian Dacă acest lucru poate fi util, am încercat lucruri foarte asemănătoare cu cele pe care le explici prin simpla utilizare a funcției de căutare din PHPMyAdmin și o înlocuire MySQL. În cazul meu, singurele tabele afectate sunt wp_posts (mii), wp_options și wp_usermetas (foarte puține intrări). Mai mult, am găsit un comentariu foarte interesant aici: http://wordpress.stackexchange.com/questions/90206/wp-posts-guid-update (cel cu fundal galben) :-)

Va trebui să redirecționați tot traficul de la HTTP la HTTPS. O regulă de rescriere poate face acest lucru pentru voi. Utilizați acest cod în locul regulii originale de rescriere din WordPress (dacă nu utilizați cache) în fișierul dvs. .htaccess
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Există și plugin-uri care pot face acest lucru pentru voi, cum ar fi Easy HTTPS Redirection.

Aceasta este o metodă foarte bună de a proceda fără a interveni în baza de date!

@Jack Johansson Am redirecționat site-ul în acest fel, dar există și conținut mixt. Din anumite motive, căile imaginilor trebuie să fie hardcodate undeva (nu pot să-mi dau seama unde este acel "undeva" exact) :-)

@3000 Imaginile sunt pe același domeniu ca al tău? Chiar dacă sunt hardcodate, regula de rescriere ar trebui să le redirecționeze. Folosești vreun fel de CDN?

@JackJohansson Am observat că am trei tipuri de probleme: imagini (pe același domeniu), fonturi (CDN) și un widget Flickr care nu mai funcționează (servit și el de pe o adresă externă HTTP)

Am folosit Better Search Replace și Really Simple SSL, iar câștigătorul este:
Pur și simplu urmează acești pași:
- Instalează-l
- Activează-l
- Permite SSL
Gata
De asemenea, a rezolvat toate problemele legate de redirecționarea imaginilor

Instalează acest plugin: https://wordpress.org/plugins/http-https-remover/
În ciuda numelui - HTTP / HTTPS Remover - cea mai recentă versiune va forța toate conexiunile http să treacă pe https, iar avertismentele de conținut mixt vor dispărea.

Problema cu un plugin ca acesta este: trebuie să știu ce face "la un nivel scăzut" (dacă un plugin strică site-ul meu, trebuie să creez site-ul din nou)

Tocmai am mutat site-ul companiei mele la versiunea securizată doar vineri trecută. Am folosit Plugin-ul Really Simple SSL și apoi am adăugat o redirecționare 301 în fișierul meu .htaccess.
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Nu uitați să verificați și versiunea HTTPS a site-ului dvs. în Search Console / Webmaster Tools

Am adăugat codul în fișierul meu .htaccess care ar redirecționa orice de la http la https.

Oricum, acest cod nu funcționează pentru mine: imaginile etc. sunt încă servite cu http:// și nu https://. Presupun - corectează-mă dacă greșesc - o problemă de cache.

Este posibil să greșesc, dar nu cred că o imagine s-ar putea stoca în cache și încărca prin https de la o versiune nesecurizată. Folosești URL-ul complet, cum ar fi http://example.com/image.png în textul propriu-zis?
