...

Riconoscere e risolvere i loop di redirect in WordPress - cause e soluzioni

Vi spiegherò in modo conciso e chiaro come potete creare una Loop di reindirizzamento WordPress e analizzarli e risolverli in modo affidabile. Vi mostrerò soluzioni immediatamente realizzabili per conflitti SSL, regole .htaccess errate, URL del sito non corretti, cache/cookies, problemi di plugin e impostazioni del server, compresi test e prevenzione.

Punti centrali

L'elenco che segue riassume i passaggi più importanti prima di illustrarli nel dettaglio.

  • Causa restringere rapidamente il campo: SSL, .htaccess, URL, plugin, cache
  • Standard-Controllo delle regole: .htaccess e wp-config.php
  • HTTPS impostato correttamente: Certificato, Contenuto misto, HSTS
  • Plugins Spegnimento su base di prova: tramite dashboard o FTP
  • Prevenzione stabilire: Backup, documentazione, monitoraggio

Che cosa significa un ciclo di reindirizzamento?

A Anello di inoltro si verifica quando l'URL A salta all'URL B e B torna ad A, oppure quando diversi salti riportano all'indirizzo iniziale alla fine. Il browser si annulla con ERR_TOO_MANY_REDIRECTS e blocca la chiamata. Spesso riconosco il loop dal fatto che il login carica nuovamente il modulo di accesso dopo l'inserimento corretto. Per i visitatori questo sembra un ciclo infinito, per i motori di ricerca un errore tecnico. Questo costa fiducia, impedisce l'accesso al backend e consuma preziosi budget per il crawling.

Principali cause di loop in WordPress

Trovo che i fattori scatenanti più frequenti siano falso URL di WordPress, regole .htaccess aggressive, doppio SSL o reindirizzamenti caotici dei plugin. Anche i vecchi cookie e le cache del browser inviano le richieste fuori strada. Dopo i cambi di dominio o le conversioni HTTPS, gli errori si verificano più frequentemente perché http e https sono mescolati. Nei temi con reindirizzamenti propri o nei plugin di sicurezza, le regole possono bloccarsi a vicenda. In rari casi, il malware imposta deliberatamente i reindirizzamenti per bloccare gli amministratori.

Test rapidi nel browser: Cookie e cache

Inizio con un Cliente-controllo, perché porta chiarezza in pochi minuti. Elimino i cookie e l'intera cache per il dominio interessato. Una finestra privata aiuta a escludere le vecchie sessioni. Se il login funziona, il problema è dovuto ai dati locali e non al server. Se l'errore continua a verificarsi, passo al livello del server e di WordPress.

Controllare .htaccess e ripristinare le impostazioni predefinite

Assicuro il .htaccess e li reimposto allo standard di WordPress come test. In questo modo rimuovo i reindirizzamenti in conflitto con precedenti esperimenti o regole SEO.

# INIZIA WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# FINE WordPress

Una volta che tutto è pronto e funzionante, aggiungerò ulteriori reindirizzamenti passo dopo passo. Per le condizioni pulite faccio riferimento a reindirizzamenti htaccess con esempi pratici. Importante: non forzare mai l'http→https due volte; una volta a livello di server è sufficiente.

Personalizzare gli URL di WordPress nelle impostazioni e in wp-config.php

Scostamenti tra WP_HOME e WP_SITEURL spesso innescano loop infiniti, soprattutto dopo il trasferimento di un dominio. Per prima cosa controllo Impostazioni > Generale. Se il backend non è accessibile, imposto brevemente i valori in wp-config.php:

define( 'WP_HOME', 'https://deinedomain.de' );
define( 'WP_SITEURL', 'https://deinedomain.de' );

In caso di problemi di SSL dell'amministratore, sblocco temporaneamente l'accesso:

define('FORCE_SSL_ADMIN', false);

Non appena sono nella dashboard, imposto gli URL corretti e rimuovo nuovamente le costanti. Gli indirizzi standardizzati evitano cicli ripetuti.

Risolvere in modo pulito i conflitti HTTPS/SSL

I conflitti sorgono quando SSL viene applicato sul lato server e un plugin imposta anche i reindirizzamenti. Per prima cosa verifico se il certificato è valido e se le intestazioni HSTS o proxy interferiscono con il riconoscimento. Poi mi assicuro che ci sia una posizione chiara che imponga l'https, preferibilmente a livello di server. Elimino costantemente gli errori di contenuto misto e le catene di inoltro errate. Per il passaggio effettivo, queste istruzioni mi aiutano a Conversione HTTPS in WordPress.

Limitazione di plugin e temi come fonte di errori

Accendo il sospetto Plugins In particolare gli strumenti di reindirizzamento, SEO e sicurezza. Se non riesco ad accedere al backend, rinomino la cartella wp-content/plugins in plugins.old tramite FTP. Quindi attivo ogni singolo plugin nella dashboard finché l'errore non ricompare. Anche il passaggio a un tema standard come Twenty Twenty-Four mostra se il tema contribuisce alle regole. Questo mi consente di individuare rapidamente la causa e di creare una configurazione priva di conflitti.

Fine dei cicli di login: Cookie, sessioni, sicurezza

Se il login non riesce nonostante la corretta Dati salta di nuovo, controllo il dominio del cookie, il percorso e il flag https. Cancello le cache a tutti i livelli: Browser, cache di WordPress, cache degli oggetti, CDN. Per i plugin di sicurezza, controllo le regole che reindirizzano gli URL degli amministratori o limitano i login. Imposto temporaneamente i valori predefiniti per la diagnostica e poi ricostruisco la sicurezza un po' alla volta. Obiettivo: una sessione stabile senza reindirizzamenti doppi.

Impostazione corretta di reverse proxy, CDN e intestazione del server

Dietro un Proxy Le applicazioni confondono facilmente http e https se l'intestazione Forwarded o X-Forwarded-Proto manca o arriva in modo errato. Controllo le configurazioni di Nginx/Apache, le impostazioni del bilanciatore di carico e l'inoltro del CDN. È importante che WordPress riconosca correttamente l'URL effettivo del client. Per le configurazioni con un proxy upstream, questa guida mi aiuta a Impostare il reverse proxy. In questo modo si evitano regole contraddittorie tra server, CDN e plugin.

Il malware come ultima fonte di sospetto

Se il loop può ancora essere chiuso nonostante tutte le correzioni non Esamino l'installazione alla ricerca di codice dannoso. Confronto i file principali con gli originali, controllo gli amministratori più recenti e i cron job. Espongo i reindirizzamenti nelle intestazioni, nei file dei modelli o tramite JavaScript, cercando window.location, meta refresh o oscure stringhe Base64. Dopo la pulizia, resetto le password e faccio un nuovo backup. La sicurezza contro le reinfezioni fa risparmiare molto tempo in seguito.

Profilassi e monitoraggio nella vita quotidiana

Prevengo i loop Cambiamenti gestisco centralmente i reindirizzamenti e li collaudo in un ambiente di staging prima delle implementazioni live. Creo automaticamente i backup e mantengo aggiornati i plugin e i temi. Dopo le modifiche al dominio, controllo gli URL del sito, l'SSL e le catene di reindirizzamento. Un piccolo sistema di monitoraggio mi segnala tempestivamente i cambiamenti di codice di stato. La seguente tabella è utile per una rapida diagnostica durante il funzionamento.

Sintomo Possibile causa Misura diretta Strumento di prova
ERRE_TROPPO_REDIRECTS Doppia applicazione di https Utilizzate una sola posizione per i reindirizzamenti Controllo intestazione HTTP, Curl
Il login salta indietro Conflitto tra cookie e sessione Cancellare i cookie, svuotare la cache Finestra privata, DevTools
La pagina iniziale non viene caricata Ciclo .htaccess Attivare .htaccess standard Registri del server, diff
Difettoso solo in caso di delega Intestazione Proto non corretta Impostare correttamente X-Forwarded-Proto Configurazione proxy, tracciamento delle intestazioni
Improvvisamente dalla classifica Catene di reindirizzamento Ridurre le catene, 301 corretto Gattonatore, Rana urlante

Tracciamento preciso dei reindirizzamenti: Tracciamento dell'intestazione e curl

Prima di passare alle configurazioni, disegno il catena esatta a. In DevTools (scheda Network) è possibile vedere ogni salto con il codice di stato e l'intestazione della posizione. Spesso è sufficiente la shell:

curl -IL https://deinedomain.de
# o dettagliato con la visualizzazione di ogni reindirizzamento
curl -IL --max-redirs 20 https://deinedomain.de

Cerco schemi come http→https→http (avanti e indietro) o www↔non-www. Anche un 302 che segue un 301 è sospetto. Se anche la prima richiesta reindirizza a /wp-login.php, la causa è di solito nel plugin/tema o nei cookie; se accade globalmente, spesso è .htaccess o il server.

Uso mirato dei log del server e di WordPress

I log risparmiano ore. Attivo il log di debug in wp-config.php senza visualizzarlo ai visitatori:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);

Poi controllo /wp-content/debug.log alla ricerca di indicazioni (ad esempio "Impossibile modificare le informazioni di intestazione" prima di un reindirizzamento). Allo stesso tempo, controllo i log del server web. Per Apache: access.log ed error.log, per Nginx: access.log con lo stato 301/302. Un'occhiata all'user agent aiuta a determinare se sono interessati solo i bot o tutti gli utenti.

WP-CLI: salvataggio rapido tramite console

Se il cruscotto non è accessibile, risolvo molte cose tramite WP-CLI:

# Controllare e impostare gli URL
opzione wp get home
wp opzione get siteurl
wp option aggiorna la home 'https://deinedomain.de'
opzione wp aggiorna siteurl 'https://deinedomain.de'

# "Salva attraverso" i permalink una sola volta
wp rewrite flush --hard

# Svuotare la cache
wp cache flush
wp cancellazione transitoria --all

# Disattivare / testare i plugin in massa
wp plugin disattivare --tutti
plugin wp attivare classic-editor

In questo modo posso tornare al sistema senza rischi, trovare i colpevoli e attivare solo ciò che è veramente necessario.

www, slash e canonizzazione senza loop

I loop sono spesso creati da piccole incongruenzewww vs. non-www, slash mancante/aggiuntivo o proto misto. Decido a favore di una sola variante e imposto solo a Catena di regole. Esempio non-www→www in Apache (senza doppio https):

RewriteEngine On
# Inoltra solo se l'host non è già www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [L,R=301]

Con Nginx, ho impostato un chiaro blocco del server per l'inoltro ed evito regole miste in PHP/plugins. Importante: prima la canonicalizzazione (www/slash), poi https - e solo per a Posizione.

Pulizia dietro proxy/CDN: riconoscere correttamente HTTPS

Se WordPress si trova dietro un bilanciatore di carico o un CDN, il backend spesso riceve solo http, anche se il client utilizza https. WordPress riconosce quindi is_ssl() in modo errato e genera dei loop. Correggo le variabili del server in anticipo nel file wp-config.php:

se (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

Ho anche impostato le intestazioni X-Forwarded-Proto e Forwarded clean sul proxy. Uso HSTS con parsimonia: Se HSTS è attivo, può nessuno percorso http, altrimenti il browser si blocca. Uso il preload solo quando tutti i sottodomini funzionano stabilmente su https.

Disinnescare le trappole per login e cookie

Una fonte comune è l'impostazione errata dei cookie. Di solito imposto nessuno COOKIE_DOMAIN. Se è stato definito una volta, lo cambio come prova:

definire('COOKIE_DOMAIN', false);

Verifico anche che il flag del cookie di amministrazione "Secure" sia impostato su https e che il percorso sia impostato su "/". In caso di problemi persistenti, cancello le sessioni lato server (ad esempio riavviando php-fpm) e svuoto la cache degli oggetti/redis in modo che i vecchi nonces non abbiano più effetto.

Caratteristiche speciali della mappatura multisito e del dominio

All'indirizzo Multisito-impostazioni, mappature diverse portano rapidamente a un loop: Modalità sottodominio o directory, protocolli diversi o un vecchio plugin di mappatura dei domini con i propri reindirizzamenti. Controllo le tabelle del blog e del sito, sincronizzo i protocolli e gli host e disattivo brevemente i reindirizzamenti automatici per il cambio di lingua. Un login "Super Admin" nel blog principale aiuta a vedere i reindirizzamenti di rete in modo centralizzato. Importante: solo un'istanza decide il dominio canonico.

WooCommerce, multilinguismo e "Nascondi login

I negozi e i siti multilingue hanno logiche di reindirizzamento aggiuntive: pagine SSL forzate (checkout/account), reindirizzamento della lingua su Accept-Language o funzioni "Hide Login" nei plugin di sicurezza. Per la diagnosi, disattivo il reindirizzamento automatico della lingua e permetto temporaneamente /wp-login.php senza una deviazione. In WooCommerce, imposto "Solo queste pagine su SSL" in modo pulito sul lato server o completamente a livello di sistema, in modo che non si verifichino stati misti.

Cache degli oggetti coordinati, cache degli opcode e dei bordi

Diversi livelli di cache possono l'un l'altro amplify: opcode PHP (OPcache), object cache (Redis/Memcached), page cache dei plugin e CDN edge. Le svuoto in sequenza ordinata, in modo che nessun livello restituisca vecchi reindirizzamenti. Dopo le modifiche alle regole, invalido completamente la cache edge. Solo a questo punto il test è significativo.

Tipiche trappole di Nginx

Con Nginx, i loop si verificano quando i blocchi di posizione vengono riscritti due volte o /index.php vive internamente ed esternamente. Uso un'unica configurazione pulita: prima il blocco di inoltro del server (www/https), poi un try_files chiaro su /index.php. Evito sempre di mischiare add_header refresh e 301/302.

Lista di controllo: trovare la causa in 10 minuti

  • Cancellare i cookie/cache localmente, testare in modalità incognito
  • eseguire curl -IL e visualizzare la catena
  • Ripristinare .htaccess/Nginx al percorso predefinito
  • Sincronizzare WP_HOME/WP_SITEURL (se necessario, tramite WP-CLI).
  • Solo un'istanza applica https (server preferito)
  • Disattivare i plugin/temi, attivarli passo dopo passo
  • Impostare correttamente l'intestazione proxy, controllare is_ssl()
  • Cache vuota di oggetti/pagine/bordi
  • Controllare i registri: debug.log, access/error.log
  • Caratteristiche speciali: Multisito, Woo, Lingue, Hide-Login

Modelli di errore che vanno oltre i classici loop

Non tutti i 301/302 sono un vero e proprio loop - ma Instradamento errato anche i costi. Un 301 a 404 segnala ai motori di ricerca "questa risorsa è qui per sempre", ma consegna il vuoto. Oppure un 302 al posto del 301 impedisce il consolidamento permanente dei segnali. Mantengo la catena a un massimo di uno o due livelli, imposto 301 per i casi permanenti, 302 per quelli temporanei ed evito perdite di stringhe di query passando correttamente i flag o gli argomenti QSA.

Distribuzioni stabili e documentazione

Per evitare che i loop si verifichino in primo luogo, documento ogni regolaChi instrada cosa verso dove - e perché? Uso un ambiente di staging, vi riproduco le modifiche alle regole, registro intestazioni e tempi e poi distribuisco le stesse impostazioni di server e plugin nella produzione. Un breve controllo successivo alla distribuzione (pagina iniziale, login, checkout, lingua) previene gli errori.

Conclusione in breve

Sto rilasciando un Anello di inoltro Sistematico: controllare i cookie, ripristinare .htaccess ai valori predefiniti, personalizzare gli URL di WP, impostare correttamente l'SSL, isolare i plugin/temi e fornire correttamente le intestazioni del server. Questi passaggi di solito chiudono il cerchio in breve tempo. Quindi proteggo l'installazione, documento i reindirizzamenti e mantengo gli aggiornamenti aggiornati. In questo modo il login rimane accessibile, i visitatori arrivano sulle pagine giuste e i motori di ricerca effettuano il crawling senza perdere tempo. Un approccio strutturato evita le ripetizioni e risparmia i nervi.

Articoli attuali