Avertizări de conținut mixt după schimbarea adresei site-ului de la HTTP la HTTPS

4 apr. 2017, 18:35:15
Vizualizări: 17.9K
Voturi: 5

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ă.

0
Toate răspunsurile la întrebare 5
14

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:

  1. 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).
  2. Accesați Tools > Better Search Replace
  3. 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 Exemplu Căutare și Înlocuire 1
  4. Selectați tabelele pe care doriți să le actualizați. Cel mai probabil, veți avea nevoie doar de tabelele wp_posts și wp_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.Selectați tabelele
  5. Efectuați un dry run (test fără modificări) pentru a vă asigura că funcționează Dry run
  6. Dacă funcționează, debifați opțiunea dry run și rulați procesul pentru real.
  7. 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.

4 apr. 2017 19:04:10
Comentarii

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

Christine Cooper Christine Cooper
4 apr. 2017 19:23:52

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

3000 3000
4 apr. 2017 19:44:58

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

Ian Ian
4 apr. 2017 19:46:05

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

3000 3000
4 apr. 2017 19:52:40

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).

Mark Kaplun Mark Kaplun
5 apr. 2017 12:12:14

@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 3000
5 apr. 2017 12:21:28

@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...

Mark Kaplun Mark Kaplun
5 apr. 2017 12:30:57

...(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.

Mark Kaplun Mark Kaplun
5 apr. 2017 12:33:27

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.

Mark Kaplun Mark Kaplun
5 apr. 2017 12:35:19

@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.

3000 3000
5 apr. 2017 12:59:27

@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 Mark Kaplun
5 apr. 2017 13:08:20

@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.

3000 3000
5 apr. 2017 13:18:15

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 Ian
5 apr. 2017 16:26:58

@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) :-)

3000 3000
7 apr. 2017 19:25:31
Arată celelalte 9 comentarii
5

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.

4 apr. 2017 19:02:31
Comentarii

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

Ian Ian
4 apr. 2017 19:05:22

@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 3000
4 apr. 2017 19:41:39

@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?

Johansson Johansson
4 apr. 2017 19:43:18

@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)

3000 3000
4 apr. 2017 19:46:34

Aceasta va funcționa pentru redirecționarea URL-urilor (și este o idee bună dacă treci la HTTPS complet), dar în acel moment este deja prea târziu pentru a preveni avertismentele de conținut mixt. URL-ul de pe pagină trebuie să fie HTTPS de la început.

Matthew Crumley Matthew Crumley
4 apr. 2017 23:08:26
0

Am folosit Better Search Replace și Really Simple SSL, iar câștigătorul este:

Really Simple SSL

Pur și simplu urmează acești pași:

  1. Instalează-l
  2. Activează-l
  3. Permite SSL

Gata

De asemenea, a rezolvat toate problemele legate de redirecționarea imaginilor

15 ian. 2019 11:44:31
2
-1

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.

4 apr. 2017 19:03:40
Comentarii

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)

3000 3000
4 apr. 2017 19:50:48

am dat vot negativ deoarece, așa cum este acum, nu este un răspuns foarte util. Acesta ar putea fi cel mai bun plugin pentru a rezolva problema, dar oamenii care citesc răspunsul ar trebui să înțeleagă bine ce face și cum

Mark Kaplun Mark Kaplun
5 apr. 2017 12:01:51
5
-1

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

4 apr. 2017 19:12:38
Comentarii

redirecționează către fișierul tău htaccess???

3000 3000
4 apr. 2017 19:48:55

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

fwho fwho
4 apr. 2017 19:51:47

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.

3000 3000
4 apr. 2017 20:30:13

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?

fwho fwho
4 apr. 2017 20:41:01

WP creează direct link-ul cu http:// adăugat: am descărcat baza de date și link-urile sunt peste tot

3000 3000
5 apr. 2017 09:27:07