MediaHost
Ασφάλεια

Mixed Content: γιατί λείπει το λουκέτο HTTPS

20 Σεπτεμβρίου 2026 Ομάδα MediaHost 5 λεπτά ανάγνωση
Mixed Content: γιατί λείπει το λουκέτο HTTPS

Το SSL είναι ενεργό αλλά κάτι λείπει;

Έβαλες SSL, το site σου φορτώνει με https:// στη γραμμή διεύθυνσης, αλλά ο browser εμφανίζει προειδοποίηση ασφαλείας ή αναφέρει mixed content στο Console. Αυτό δεν σημαίνει ότι το πιστοποιητικό είναι λάθος. Μία από τις συχνότερες αιτίες είναι το mixed content: η σελίδα φορτώνει μέσα από https, αλλά κάποιοι από τους embedded πόρους της (εικόνες, scripts, CSS, fonts, iframes) φορτώνουν ακόμα μέσα από απλό http.

Τι ακριβώς είναι το mixed content

Όταν ένας browser φορτώνει μια σελίδα μέσω HTTPS, περιμένει ότι όλα τα στοιχεία της θα έρθουν επίσης κρυπτογραφημένα. Αν η σελίδα περιέχει αναφορά σε πόρο μέσω http://, δημιουργείται mixed content. Ανάλογα με τον τύπο του πόρου, ο browser είτε θα προσπαθήσει να αναβαθμίσει αυτόματα το αίτημα σε HTTPS είτε θα το μπλοκάρει. Η σύγχρονη προδιαγραφή για το mixed content χωρίζει το πρόβλημα σε δύο κατηγορίες:

  • Upgradable content: εικόνες, video και audio μέσω http. Οι σύγχρονοι browsers τα αναβαθμίζουν αυτόματα σε https πριν τα φορτώσουν, οπότε συνήθως εμφανίζονται κανονικά.
  • Blockable content: scripts, stylesheets, iframes, fonts και αιτήματα fetch/XHR μέσω http. Αυτά μπλοκάρονται εντελώς από τον browser, οπότε μέρος του site μπορεί απλά να μη λειτουργεί.

Στο upgradable content, ο browser συνήθως διορθώνει αυτόματα το αίτημα σε HTTPS. Στο blockable content, αντίθετα, ο πόρος μπλοκάρεται και αυτό μπορεί να προκαλέσει προβλήματα στην εμφάνιση ή τη λειτουργία της σελίδας. Και στις δύο περιπτώσεις, οι σχετικές αναφορές σε HTTP καλό είναι να διορθώνονται από τον ιδιοκτήτη του site.

Από πού προέρχεται συνήθως

Στην πράξη, το mixed content σχεδόν πάντα προέρχεται από ένα από τα εξής:

  • Παλιό περιεχόμενο: άρθρα ή σελίδες που γράφτηκαν πριν εγκατασταθεί το SSL, με εικόνες ή άλλους embedded πόρους αποθηκευμένους στη βάση δεδομένων ως http://.
  • Theme ή plugin που φορτώνει κάποιο asset (font, script, εικόνα) με http:// URL αντί για https:// ή σχετική διαδρομή.
  • Εξωτερικό περιεχόμενο, όπως ένα embed από τρίτο site που δεν υποστηρίζει https.
  • Ρύθμιση Site URL / Home URL στο WordPress που έχει μείνει σε http ενώ το SSL είναι ήδη ενεργό.

Πώς το εντοπίζεις

Ο πιο άμεσος τρόπος είναι ο ίδιος ο browser. Άνοιξε τη σελίδα, πάτα F12 για τα εργαλεία προγραμματιστή και πήγαινε στο tab Console. Οι περισσότεροι browsers καταγράφουν εκεί ρητά ποια αρχεία μπλοκαρίστηκαν ή φορτώθηκαν μέσω http, με το ακριβές URL του κάθε πόρου. Αυτό σου δείχνει αμέσως αν το πρόβλημα είναι ένα συγκεκριμένο plugin, ένα theme asset ή γενικευμένο περιεχόμενο μέσα από τη βάση δεδομένων.

Πρώτο βήμα: έλεγξε τις ρυθμίσεις URL

Στο WordPress, πήγαινε στο Ρυθμίσεις → Γενικά και βεβαιώσου ότι τόσο το «Διεύθυνση WordPress (URL)» όσο και το «Διεύθυνση ιστότοπου (URL)» ξεκινούν με https://. Αν ένα από τα δύο έχει μείνει σε http, όλες οι σχετικές αναφορές μέσα στο site θα κληρονομούν το λάθος πρωτόκολλο.

Δεύτερο βήμα: καθάρισε τη βάση δεδομένων

Αν το πρόβλημα είναι σε παλιό περιεχόμενο, η πιο αξιόπιστη λύση είναι ένα search-replace στη βάση δεδομένων, που αντικαθιστά κάθε εμφάνιση του http:// με https:// στο domain σου. Αν έχεις πρόσβαση σε SSH, ξεκίνα πάντα με μια δοκιμαστική εκτέλεση, προσθέτοντας --dry-run, ώστε να δεις τι θα αλλάξει χωρίς να εφαρμοστεί καμία αλλαγή ακόμα:

wp search-replace 'http://το-domain-σου.gr' 'https://το-domain-σου.gr' --skip-columns=guid --dry-run

Αν τα αποτελέσματα που εμφανίζονται είναι σωστά, τρέξε την ίδια εντολή χωρίς το --dry-run για να εφαρμοστεί η αλλαγή:

wp search-replace 'http://το-domain-σου.gr' 'https://το-domain-σου.gr' --skip-columns=guid

Η παράμετρος --skip-columns=guid είναι σημαντική: το πεδίο guid στη βάση χρησιμοποιείται ως μοναδικό αναγνωριστικό για κάθε άρθρο και δεν πρέπει να αλλάξει, ακόμα κι αν το URL αλλάζει. Αν δεν έχεις εγκατεστημένο το WP-CLI, μπορείς να δεις πώς ενεργοποιείται μέσα από τον οδηγό εγκατάστασης WP-CLI.

Πριν τρέξεις οποιοδήποτε search-replace, πάρε ένα πρόσφατο αντίγραφο ασφαλείας της βάσης· η εντολή αλλάζει δεδομένα άμεσα και μαζικά. Δες πώς λειτουργεί το backup του WordPress στον οδηγό backup και επαναφοράς.

Αν δεν έχεις πρόσβαση σε SSH, ένα plugin τύπου search-and-replace μέσα από τον πίνακα διαχείρισης κάνει την ίδια δουλειά με ασφαλή προεπισκόπηση πριν την εφαρμογή.

Τρίτο βήμα: καθάρισε το cache

Αφού διορθώσεις τη βάση, οι αλλαγές μπορεί να μη φανούν αμέσως αν υπάρχει ενεργό cache· ο browser ή το LiteSpeed Cache μπορεί να σερβίρουν ακόμα την παλιά, cached εκδοχή της σελίδας με τα http:// links. Καθάρισε το cache μέσα από το plugin και έλεγξε ξανά το Console. Αν δεν είσαι σίγουρος πώς λειτουργεί το caching στο WordPress σου, ο οδηγός για το LiteSpeed Cache εξηγεί πού βρίσκεται το κουμπί καθαρισμού.

Τι κάνεις με εξωτερικό περιεχόμενο που δεν έχει https

Αν ένας πόρος έρχεται από τρίτο domain που απλά δεν υποστηρίζει https, η μόνη πραγματική λύση είναι να τον αντικαταστήσεις: κατέβασέ τον τοπικά και σερβίρισέ τον από το δικό σου site, ή βρες εναλλακτική πηγή που υποστηρίζει https. Δεν υπάρχει τρόπος να «αναγκάσεις» ένα ξένο server να σου δώσει κρυπτογραφημένη σύνδεση αν δεν το υποστηρίζει.

Πότε το πρόβλημα δεν είναι mixed content

Αν το πιστοποιητικό δεν εμφανίζεται καθόλου σωστό, ή ο browser σου δείχνει σφάλμα πιστοποιητικού και όχι απλή προειδοποίηση mixed content, το πρόβλημα είναι αλλού. Ένα ήδη έγκυρο πιστοποιητικό δεν σταματά να λειτουργεί λόγω CAA record· το CAA καθορίζει μόνο ποιες Αρχές Έκδοσης Πιστοποιητικών επιτρέπεται να εκδώσουν ή να ανανεώσουν πιστοποιητικό για το domain σου. Αν το CAA είναι λάθος ρυθμισμένο, αυτό που συνήθως αποτυγχάνει είναι η επόμενη έκδοση ή ανανέωση SSL, όχι η λειτουργία ενός πιστοποιητικού που ήδη δουλεύει. Αν αντιμετωπίζεις πρόβλημα κατά την έκδοση ή ανανέωση SSL, δες το σχετικό άρθρο για το SSL που αποτυγχάνει λόγω CAA record.

Συνοπτικά

Το mixed content είναι ένα από τα πιο συχνά, αλλά και πιο εύκολα διορθώσιμα, ζητήματα μετά την εγκατάσταση SSL. Έλεγξε τις ρυθμίσεις URL, καθάρισε τη βάση δεδομένων με προσοχή, καθάρισε το cache, και επιβεβαίωσε το αποτέλεσμα μέσα από το Console του browser. Μια σελίδα χωρίς προειδοποιήσεις ασφαλείας δεν είναι απλά αισθητικό ζήτημα, δείχνει στον επισκέπτη ότι όλη η σύνδεση, χωρίς εξαιρέσεις, είναι πραγματικά κρυπτογραφημένη.

ΟΜ
Ομάδα MediaHostΤεχνική ομάδα MediaHost · Υποστήριξη 24/7/365
f X in