- Home
- Categorie
- Coding e Sistemistica
- CMS & Piattaforme Self-Hosted
- Bug wordpress?
-
nessuno?
-
Ciao otta
non è un bug, è la "prassi". Il 404 viene visualizzato quando si cerca qualcosa che nel sito non c'è o è stato rimosso, spostato, ecc...
-
Ciao Katherine,
grazie per la tua risposta ma purtroppo speravo di trovare un modo tecnico, magari attraverso l'htaccess per evitare che una pagina del genere per esempio miosito.it/index.php?page=search&q=parola+chiave (pagina che non esiste) facesse un redirect verso la home con codice 200 perchè credo che potrebbe essere intesa come una duplicazione della home.Nel mio caso infatti essendo passato da una vecchia piattaforma a wordpress mi ritrovo sui motori di ricerca alcune vecchie url come quella sopra indicata che anzichè restituire un 404 mostra la home con header 200.
Spero di essere riuscito a spiegarmi, se hai una idea di come mostrare un 404 per una url del genere te ne sarei grato, è sicuramente qualcosa che non sarà capitato solo a me quindi credo che possa interessare anche ad altri utenti.
Grazie
-
Ma, probabilmente un modo ci sarà, ma non so come aiutarti. Magari qualcuno di più esperto in questioni di natura tecnica
-
Ciao Otta, dipende anche dal template in uso: se esiste un file 404.php in root del template, puoi modificare quella.
-
Ciao Teju,
grazie per il tuo contributo ma non mi è chiaro cosa vuoi dire.Certo che ho un file 404.php ma cosa dovrei modificare?
Il punto secondo me è lavorare su una regola nel file .htaccess che faccia restituire alle pagine come miosito.it/index.php?qualcosa un 404 anzichè un 200.Ho il dubbio che forse questo non sia un bug ma va bene così però nel mio caso, visto che ho delle vecchie url indicizzate sui motori, è un problema perchè non riesco a fargli restituire l'errore 404 ma comunico ai motori con il codice 200 che la pagina continua ad esistere ed è la home quindi duplicazione della index.
-
Se non sbaglio, la pagina 404.php del template è quella che decide dove reindirizzarti in caso di indirizzi non corretti, o di visualizzare un messaggio di errore.
Dunque, a seconda del template, vieni reindirizzato in home o ti viene comunicato un errore.
Cambiando quel file cambi il messaggio all'utente che sbaglia link.In alternativa, il tuo file .htaccess può contenere questo codice:
ErrorDocument 404 /pagina_a_cui_reindirizzare.php
-
Ciao Teju, grazie nuovamente per il tuo aiuto ma le ho già provate tutte, il problema non è dove far reindirizzare in caso di pagina non esistente, il problema è che wordpress non vede una pagina di questo tipo miosito.it/index.php?qualcosa come una pagina inesistente.
Se ti capita prova su un qualsiasi sito fatto in wordpress.
Grazie
-
Ah ok, così mi è più chiaro il tuo problema!
Una pagina PHP ha due modi per passare variabili tra una pagina ed un'altra: in GET o in POST. Entrambi questi metodi sono utilizzabili con le <form> HTML, o puoi passare variabili in GET anche mettendo un indirizzo.php**?**variabile=valore.
Dunque se tu scrivi index.php?qualcosa il PHP si aspetta un valore per la variabile GET "qualcosa" e se non lo trova correttamente visualizza la sola index.php senza alcuna modifica.
E' dunque un'impostazione del PHP, difficile fargli credere sia un 404... a meno di non aggiungere del codice in cui dici, a grandi linee (codice non testata, ma a logica corretto):
foreach ($_GET as $variabile) {
if ($variabile!='p') {
if ($variabile!='page_id'){
echo '<meta HTTP-EQUIV="REFRESH" content="0; url=TUO_SITO/404.php">';
}
}
}Ovvero leggi tutte le variabili passate in GET e se non equivalgono a "p" o a "page_id" (ovvero le variabili che indicano i post e le pagine, e devi aggiungere anche gli altri casi di archivio, data, etc....) vengono reindirizzate su 404.php
-
Grazie Teju,
credo questa soluzione funzionerà, ti farò sapere, mille grazie.