Modulul 3 · 3.2
www, redirecționare și conținut mixt
Modulul 3: Adresă, https și utilizatori · Timp de citire: 9 minute
Obiectiv de învățare: După această lecție veți putea alege o singură adresă principală, veți putea redirecționa toate variantele către ea printr-o singură redirecționare și veți putea depista și rezolva conținutul mixt.
Concepte-cheie: adresă canonică, 301 și 308, lanț de redirecționări, conținut mixt (mixed content), căutare și înlocuire în baza de date, date serializate
Patru adrese, un singur site web
Site-ul dumneavoastră web poate fi accesat prin patru adrese:
http://example.com
http://www.example.com
https://example.com
https://www.example.comPentru un vizitator nu contează, dar pentru motoarele de căutare acestea sunt patru adrese diferite cu același conținut. Și cookie-urile (cum ar fi cookie-ul de autentificare) sunt valabile pentru fiecare nume în parte: cine se autentifică pe www nu este autentificat pe domeniul fără www. De aceea alegeți o singură adresă canonică (adresa principală) și redirecționați celelalte trei către ea.
Pe care o alegeți este o chestiune de preferință (lecția 2.1). Important este ca adresa principală să fie aceeași peste tot: în DNS, în certificat, în Setări > Generale (lecția 3.1) și în redirecționări.
Redirecționare cu un 301, într-un singur pas
O redirecționare este un răspuns al serverului: „această pagină se află în altă parte”. Browserul merge apoi automat la noua adresă. Codul arată ce fel de redirecționare este:
| Cod | Semnificație | Utilizare |
|---|---|---|
| 301 | Mutat permanent | Alegerea standard pentru http către https și pentru www către domeniul fără www (sau invers) |
| 308 | Permanent, iar metoda (de exemplu trimiterea unui formular) rămâne aceeași | Poate fi folosit și în acest scop; browserele și motoarele de căutare îl tratează ca pe un 301 |
| 302 sau 307 | Temporar | Numai pentru ceva cu adevărat temporar, cum ar fi o pagină de mentenanță |
O redirecționare permanentă le spune motoarelor de căutare că noua adresă este cea adevărată. La una temporară, ele rețin în continuare adresa veche.
Atenție și la lanț. Să presupunem că adresa dumneavoastră principală este https://example.com. Atunci doriți:
http://www.example.com 301 https://example.com/
http://example.com 301 https://example.com/
https://www.example.com 301 https://example.com/
https://example.com 200Fiecare variantă ajunge la adresa principală într-un singur pas. Ce se întâmplă des:
http://www.example.com 301 https://www.example.com/
https://www.example.com 301 https://example.com/Funcționează, dar costă un pas în plus (timp de așteptare suplimentar, mai ales pe mobil) și o negociere TLS în plus. Mai grav este o buclă: serverul web redirecționează către https, WordPress redirecționează înapoi către http pentru că adresele din setări sunt încă pe http, iar browserul afișează „prea multe redirecționări”. În acest caz, două setări lucrează una împotriva celeilalte. Asigurați-vă că o singură parte redirecționează către https (serverul web sau panoul) și că adresele din WordPress sunt deja setate la adresa principală.
WordPress redirecționează și el: dacă cineva solicită https://www.example.com/contact/ în timp ce adresa site-ului este https://example.com, WordPress redirecționează către https://example.com/contact/. Acest lucru funcționează numai dacă cererea ajunge la WordPress, adică dacă serverul web direcționează și numele www către acest site web.
Conținut mixt
Conținutul mixt (mixed content) înseamnă o pagină https care încarcă elemente prin http://: o imagine, o foaie de stil, un script, un font sau un videoclip încorporat. Browserul consideră acest lucru nesigur, deoarece acele elemente pot fi modificate pe drum.
- Scripturile, foile de stil și iframe-urile încărcate prin http sunt blocate de browsere. Site-ul dumneavoastră web arată atunci stricat sau o funcție nu mai merge.
- Imaginile, fișierele audio și video încărcate prin http sunt preluate automat prin https de browserele moderne; dacă nu reușesc, sunt blocate. Lacătul poate afișa atunci un avertisment.
De unde provine:
- Linkuri vechi în conținutul dumneavoastră: un site web care era înainte pe http are în mii de articole
<img src="http://example.com/wp-content/uploads/...">. WordPress salvează aceste linkuri textual în baza de date. - Setări ale temei sau ale modulelor (pluginurilor) cu o adresă completă, de exemplu un logo sau un fundal cu
http://. - Elemente externe de pe alt site web care sunt accesibile numai prin http. Pe acestea trebuie să le înlocuiți sau să le eliminați.
- Adrese din Setări > Generale care sunt încă pe http (lecția 3.1).
Cum îl găsiți
Deschideți pagina, apăsați F12 și uitați-vă în fila Consolă. Browserul raportează fiecare caz de conținut mixt împreună cu adresa elementului. Sau căutați în codul sursă al paginii (Ctrl+U) src="http:// și href="http://. Linkurile către alte site-uri din textul obișnuit (<a href="http://...">) nu produc conținut mixt; este vorba despre lucrurile pe care pagina le încarcă.
Căutare și înlocuire, dar corect
Soluția pentru linkurile vechi din conținut este să înlocuiți toate http://example.com din baza de date cu https://example.com. Tentația este o comandă SQL precum:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');Nu faceți acest lucru. Multe setări ale temelor, modulelor (pluginurilor) și widgeturilor sunt salvate serializat. Arată astfel:
s:27:"http://example.com/logo.png";s:27 înseamnă: urmează un text de 27 de caractere. După o înlocuire simplă, textul are 28 de caractere (s-a adăugat un s), dar scrie în continuare 27. PHP nu mai poate citi valoarea, iar setarea dispare pe tăcute: un meniu gol, un logo dispărut, widgeturi care nu mai sunt.
Folosiți un instrument care actualizează aceste lungimi și faceți întotdeauna mai întâi o copie de siguranță (backup) (lecția 8.1): căutarea și înlocuirea nu au coș de gunoi.
- WP-CLI: întâi verificați, apoi executați. În terminal, mergeți în folderul instalării WordPress și rulați mai întâi testul (primul rând), abia apoi varianta reală (al doilea rând).
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guidCu --dry-run vedeți câte înlocuiri ar avea loc în fiecare tabel, fără să se modifice nimic. --skip-columns=guid lasă neatinși identificatorii ficși ai articolelor (coloana guid); WordPress recomandă să nu îi modificați niciodată. Fără opțiuni suplimentare, WP-CLI lucrează numai pe tabelele WordPress. Dacă un modul (plugin) are tabele proprii cu același prefix, adăugați --all-tables-with-prefix. Folosiți --all-tables numai dacă știți de ce: acesta afectează fiecare tabel din baza de date, inclusiv pe cele ale altui site web sau ale altei aplicații.
- Un modul (plugin) de căutare și înlocuire care acceptă date serializate (există mai multe în directorul de module de pe wordpress.org). Folosiți și acolo mai întâi modul de test, iar apoi eliminați din nou modulul (pluginul).
Nu înlocuiți niciodată ceva precum example.com fără http:// sau https:// în față: veți modifica astfel și adrese de e-mail și alte texte. Întreaga procedură, inclusiv pentru cei care nu au acces la terminal, este descrisă în articolul din baza de cunoștințe despre căutarea și înlocuirea în baza de date WordPress (vedeți Lecturi suplimentare).
În practică: cum arată într-un panou
Ca exemplu folosim DirectAdmin. Alte panouri au un comutator similar pentru „întotdeauna https”.
- Activați în setările domeniului Force SSL with https redirect (lecția 3.1).
- Alegeți la domeniu dacă www trebuie să ducă la domeniul fără www sau invers (în DirectAdmin, în setările domeniului; altfel printr-o redirecționare prin Site Redirects sau
.htaccess). - Verificați lanțul cu exercițiul de mai jos sau cu instrumentele pentru dezvoltatori ale browserului (fila Rețea, bifa „Păstrează jurnalul”).
Rezumat
- Alegeți o singură adresă canonică și trimiteți celelalte trei variante către ea cu un 301 (sau 308), într-un singur pas.
- Lăsați o singură parte să redirecționeze către https; altfel obțineți o buclă.
- Conținutul mixt înseamnă o pagină https care încarcă elemente prin http; consola browserului arată care sunt acestea.
- Linkurile vechi din baza de date le înlocuiți cu
wp search-replacesau cu un modul (plugin) care înțelege datele serializate, niciodată cu un simplu REPLACE în SQL. - Întotdeauna mai întâi o copie de siguranță (backup) și mai întâi un test (
--dry-run); lăsați neatinsă coloanaguidși rămâneți la tabelele WordPress.
Test (quiz)
Exercițiu
Exercițiul A3.2: O singură adresă principală și fără conținut mixt. Introduceți domeniul dumneavoastră. Programul deschide cele patru variante (http și https, cu și fără www) și urmărește redirecționările. Corect este: toate patru ajung la aceeași adresă cu https, cu cel mult o redirecționare pe variantă și numai cu coduri permanente (301 sau 308). Apoi programul citește HTML-ul paginii principale și caută scripturi, foi de stil, imagini, iframe-uri și fonturi care sunt încărcate prin http://.
Lecturi suplimentare
Aceste articole descriu pașii din panourile WebOké; în alte panouri funcționează în mod similar.
- Manual DirectAdmin 6.4: Vizitatorii întotdeauna direcționați către https
- Manual DirectAdmin 4.7: Site Redirects: redirecționarea unui domeniu sau a unei pagini
- Căutare și înlocuire în baza de date WordPress
- Redirecționați obligatoriu vizitatorii către https
- Curs gratuit de DNS 3.4: www, redirecționare și ce nu face DNS
- Conținut mixt (MDN, în engleză): https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
- wp search-replace (developer.wordpress.org, în engleză): https://developer.wordpress.org/cli/commands/search-replace/
