Newsgroup: it.comp.www.php
Titolo: Su una custom 404.html fare un redirect 301

Sono su un virtual hosting e quindi non ho accesso a funzionalit� 
avanzate ma posso agire di php.
 
Il mio problema � che ho molti 404 con pagine tipo "nome_pagina.php" 
quando la pagina si chiama "Nome_pagina.php" e volevo favorire il 
visitatore e redirezionarlo alla pagina corretta, con un po' di php 
posso agevolmente farlo.
 
L'idea (malsana?) era quella di usare la custom page dell'errore 404 
(not found) in modo da inserire del codice php che aggiunga l'header di 
redirect nel caso in cui la pagina sia stata malscritta.
 
In pratica vorrei intercettare la pagina malscritta e fare un redirect 
alla pagina corretta con un errore 301.
 
Spero ci siano idee migliori, avete link o suggerimenti?
-- 
Sandro kensan 
www.kensan.it
 & 
www.qiqi.it
 geek site

 Spero ci siano idee migliori, avete link o suggerimenti?
 
Pare che la mia idea possa essere applicata e qualcuno lo ha fatto con 
questo codice:
 
<?php
     //first, try and decipher requested URL and redirect to an 
appropriate substitute
     $redirect = '';
 
    //try to match it to an old URL
    //logic for convert mistyped URL in correct URL
    switch ($_SERVER['REQUEST_URI']) {
         case '/category49' :
             $redirect = '/hen-party-shirts-c-49.html';
         break;
         case '/nextcategory' :
             $redirect = '/new-category-page.html';
         break;
         case '/and/so/on' :
             $redirect = '/and/so/forth';
         break;
     }
 
     //if $redirect contains a value, send a redirect
     if($redirect) {
         //make sure that a permanent redirect is sent
         header('HTTP/1.0 301 Moved Permanently');
         header("Location: 
http://www.yoursite.com
$redirect");
         //we're done--stop processing the script here
         exit();
     }
     //anything below this line will only be processed if no suitable 
redirect is found
 
     //output your error page
?>
<html>
<head>
<title>404 Not Found</title>
</head>
<body>
   <h1>404 Not Found</h1>
</body>
</html>
 
Mi chiedo a questo punto come venga gestita la cosa di avere due header 
uno con l'errore 404 e un header con errore 301. Forse l'header valido � 
solo l'ultimo?
 
Questo � il post che fa vedere la soluzione:
 
http://forums.jaguarpc.com/design-development/13310-best-way-redirect-404-pages.html#post88763
 


 Spero ci siano idee migliori, avete link o suggerimenti?
 
Potresti disabilitare la sensibilità al maiuscolo, se il tuo piano di 
hosting lo prevede, o cambiare piano di hosting.
 
Cos'è il "virtual hosting"?


Il virtual hosting non so se sia il termine corretto, intendevo un 
server in cui ci sono centinaia di domini sotto un unico ip, io ho uno 
di questi domini con un po' di banda e un po' dello spazio hard disk.
 
In pratica il settaggio del server è comune a tutti i clienti ospitati e 
quindi non posso chiedere nessun settaggio personale.



potresti mettere un .htaccess personalizzato nella root del sito o nella 
pagina public (a seconda di come è strutturato il tutto)
 
fai riferimento
 
http://forum.webrankinfo.com/convertir-une-url-minuscule-t84833.html
 
http://www.askapache.com/htaccess/rewrite-uppercase-lowercase.html
 
http://webmasters.stackexchange.com/questions/18670/how-to-redirect-any-url-to-lowercase-url
 
 
comunque sono le regole che imposti al webserver (negli esempi apache).
 
oppure devi crearti un sistema di routing che quando non trova la 
risorsa (pagina, action, parametri o qualsiasi risorsa che serva) la 
routa su una tua pagina, (non reinventare la ruota utilizza un qualsiasi 
framework)
 
Ciao

 framework)
 
Non ho capito cosa sia il sistema di routing, sono un principiante in 
materia :( Provando a indovinare routing vuol dire instradamento e la 
mia pagina 404.php esegue un instradamento.


 pagina 404.php però io trovo molto meglio agire dalla pagina 404.
 
Il SEO dipende dal motore di ricerca, assumendo che tu ti riferisca a 
Google tieni conto che il tempo di risposta della pagina è uno dei 
parametri in considerazione nella valutazione e che una elaborazione 
realizzata in PHP richiede più tempo di una pagina statica o di una 
logica implementata nel server.


 
se non ho capito male dalle risposte che hai dato, la tua pagina 404.php 
viene invocata nel caso il WebServer dia una risposta 404 NOT FOUND.
 
Un sistema di routing intercetta le richieste (pagine , controller, 
action o altro ) e le routa in modo corretto, e in caso di mancanza 
della risorsa questo avviene PRIMA del webserver e agisce di conseguenza.
 
un esempio
quando trovi degli indirizzi tipo "
www.miosito.com/notizie/pagina/2
" 
sicuramente NON fa riferimento ad una pagina web che si chiama 2, ma 
bensi ad una serie di script dove la risorsa (o controller) è "notizie" 
la action "pagina" e il parametro "2", il sistema di routing capisce che 
deve chiamare lo script che si occupa delle notizie, che deve svolgere 
l'azione (in genere il metodo in OOP) pagina con il parametro 2.
quando il sistema di routing si accorge che qualcosa manca, di solito 
routa in maniera tale da avvertire l'utente che la richiesta effettuata 
non può essere elaborata e al massimo lo reindirizza al punto precedente.
 
MAI lasciare libero arbitrio al server.
Pensa se un utente si sbaglia e per un solo carattere lo reindirizzi ad 
una pagina sbagliata e lui non se ne accorge (quasi nessuno legge la 
barra degli indirizzi per sapere quale pagina sta visitando)
 
Penso che il redirect sia anche gestito di malavoglia dai motori di 
ricerca che potrebbero vederlo come phishing.
 
Ciao

 ricerca che potrebbero vederlo come phishing.
 
 
Può essere che il redirect venga mal gestito dai motori di ricerca ma 
ultimamente google non mi manda molti visitatori, circa il 10% sono 
quelli mandati da tutti i motori di ricerca al mio sito. Quindi mi 
preoccupo meno di questo fattore, invece circa il 70% sono quelli che 
provengono da un accesso diretto (AWStats li definisce Direct address / 
Bookmark / Link in email...), quindi mi devo occupare di questi e non 
dei motori di ricerca.
 
Per questo motivo mi devo interessare agli URL malscritti che è facile 
ci siano nelle email, per esempio 
www.miosito.it/articolo.php
 oppure 
www.miosito.it/articolo.php
) oppure 
www.miosito.it/Articolo.php
 devo 
gestirli in modo da evitare di perdere visitatori.
 
Quel che faccio è inserire del codice php nella pagina 404.php in modo 
da fare un redirect 301 (permanent moved) se ci sono *solo* problemi di 
maiuscole/minuscole.
 
Se invece c'è una piccola differenza di testo (similar_text con 
percentuale > 80%) allora propongo il link corretto che l'utente può 
cliccare se ritiene che sia ciò che cerca. In questo caso il 404 NOT 
FOUND c'è tutto e non c'è alcun redirect.
 
Altrimenti la pagina 404.php offre la possibilità di usare un motore di 
ricerca interno al sito. Anche in questo caso rimane il 404 NOT FOUND.
