• Super User

    URL Rewriting

    Ciao a tutti.
    Ecco la mia domandona:
    ho un sito con diversi hotel inseriti in un database. La ricerca avviene
    tramite un file search.php?citta=milano.
    Ho inserito (anche grazie al vostro aiuto) il rewriting per trasfermare le pagine del mio sito da www.miosito.it/search.php?citta=milano adesso ho
    www.miosito.it/hotel-milano.html
    La mia domanda è:
    Quando effettuo una ricerca all'interno del box, mi compare la pagina
    www.miosito.it/search.php?citta=milano. Però se accedo a www.miosito.it/hotel-milano.html, mi restituisce gli stessi record.
    Quindi come posso fare che quando un utente effettua una ricerca
    venga trasformata direttamente l'url in www.miosito.it/hotel-milano.html ????

    Grazie a tutti quelli che mi vorranno aiutare.
    Un saluto
    Andrea


  • Community Manager

    Ciao stable,

    dovresti modificare il file search.php, facendogli fare un redirect, se non vado errato 🙂


  • User Attivo

    @stable said:

    Ciao a tutti.
    Ecco la mia domandona:
    ho un sito con diversi hotel inseriti in un database. La ricerca avviene
    tramite un file search.php?citta=milano.
    Ho inserito (anche grazie al vostro aiuto) il rewriting per trasfermare le pagine del mio sito da www.miosito.it/search.php?citta=milano adesso ho
    www.miosito.it/hotel-milano.html
    La mia domanda è:
    Quando effettuo una ricerca all'interno del box, mi compare la pagina
    www.miosito.it/search.php?citta=milano. Però se accedo a www.miosito.it/hotel-milano.html, mi restituisce gli stessi record.
    Quindi come posso fare che quando un utente effettua una ricerca
    venga trasformata direttamente l'url in www.miosito.it/hotel-milano.html ????

    Grazie a tutti quelli che mi vorranno aiutare.
    Un saluto
    Andrea

    Hai due soluzioni. Il form non è più un classico form ma lo trasformi in javascript e fai il redirezionamento all'url, tipo sul bottone metti

    
    onclick="location.href='/hotel-' + citta.value + '.html';"
    
    

    oppure lato server potresti modificare il codice di search.php mettendo tipo

    
    <?
    Header( "HTTP/1.1 301 Moved Permanently" ); 
    Header( "Location: http://www.miosito.it/hotel" . $_GET['citta']; .html" ); 
    ?>
    
    

    Entrambi hanno vantaggi e svantaggi: il primo non funziona se javascript è disabilitato, il secondo deve fare una doppia chiamata al webserver ad ogni ricerca. Personalmente sceglierei la seconda.


  • Super User

    Così:
    [PHP]
    Header( "HTTP/1.1 301 Moved Permanently" );
    Header( "Location: http://www.miosito.it/hotel-" . $_GET['citta']; .html" " );
    [/PHP]

    mi da un errore Parse error: parse error, unexpected ';'

    Come mai?


  • User Attivo

    forse il ; dopo $_GET['citta']

    edit:
    forse ho detto una semi cacchiata 🙂
    prova
    Header( "Location: http://www.miosito.it/hotel-" . $_GET['citta'] . ".html" );


  • User Attivo

    @stable said:

    Così:
    [php]
    Header( "HTTP/1.1 301 Moved Permanently" );
    Header( "Location: http://www.miosito.it/hotel-" . $_GET['citta']; .html" " );
    [/php]

    mi da un errore Parse error: parse error, unexpected ';'

    Come mai?

    scusa, è vero c'è un errore, prova così:

    
    Header( "Location: http://www.miosito.it/hotel-" . $_GET['citta'] . ".html" );
    
    

    però questo redirect non deve farlo sempre, ma solo se proviene dall'url normale e non rewritata.


  • User Attivo

    Ciao a tutti,
    sto entrando in questi gg nel vostro mondo, sono ancora molto inesperto e sto iniziando a capirci qualcosa proprio ora.
    La domanda che mi sono fatto, dopo aver letto anche l'articolo, è perchè viene messo

    www.miodominio.it/hotel-milano

    invece che

    www.miodominio.it/hotel_milano

    C'e' differenza?
    E' meglio il "-" o "_"?

    Grazie per le vostre risposte.

    Luca


  • User Attivo

    @lucabaldazzi said:

    Ciao a tutti,
    sto entrando in questi gg nel vostro mondo, sono ancora molto inesperto e sto iniziando a capirci qualcosa proprio ora.
    La domanda che mi sono fatto, dopo aver letto anche l'articolo, è perchè viene messo

    www.miodominio.it/hotel-milano

    invece che

    www.miodominio.it/hotel_milano

    C'e' differenza?
    E' meglio il "-" o "_"?

    Grazie per le vostre risposte.

    Luca

    Ciao lucabaldazzi,
    il trattino "-" viene visto dai motori più o meno come se fosse uno spazio, mentre l'underscore _ attacca due termini tra di loro.

    Puoi fare una prova da solo cercando su google la parola hotel-milano e hotel_milano, nel secondo caso interpreterà l'underscore come parte integrante della ricerca e ti restituirà molti meno risultati.
    Personalmente consiglio di usare il "-" anzichè il "_" e se mastichi bene l'inglese anche Matt Cutts tratta la questione della scelta tra trattino o underscore sotto questi termini.


  • Super User

    ragazzi con entrambi i codici mi da quest'errore:
    Questa pagina non ridireziona in modo corretto
    Firefox ha rilevato che il server sta ridirezionando la richiesta per questo indirizzo in modo che non possa mai essere completata.
    Questo problema spesso è causato dal blocco o dal rifiuto dei cookie.
    Uff....


  • User Attivo

    @stable said:

    ragazzi con entrambi i codici mi da quest'errore:
    Questa pagina non ridireziona in modo corretto
    Firefox ha rilevato che il server sta ridirezionando la richiesta per questo indirizzo in modo che non possa mai essere completata.
    Questo problema spesso è causato dal blocco o dal rifiuto dei cookie.
    Uff....

    beh se l'hai messo così nudo e crudo va in loop, devi impostare un "if" in modo che la redirezione avvenga solo quando proviene dal form di ricerca (potresti per esempio aggiungere nel form un altro parametro hidden)


  • User Attivo

    ma qual'è la ragione del cambio di url della ricerca via form? Google non segue comunque i form (giusto?) E' solo per mostrare una url più bella agli utenti?

    Certo i vantaggi ci sono: evitare link spontanei ala url con i parametri; evitare effetti collaterali dovuti alle toolbar che seguono.

    Ma in realtà tali vantaggi giustificano lo sbattimento e i rischi di agire sul form per modificare l'url di uscita?:? :mmm:


  • User Attivo

    @centix said:

    ma qual'è la ragione del cambio di url della ricerca via form? Google non segue comunque i form (giusto?) E' solo per mostrare una url più bella agli utenti?

    Certo i vantaggi ci sono: evitare link spontanei ala url con i parametri; evitare effetti collaterali dovuti alle toolbar che seguono.

    Ma in realtà tali vantaggi giustificano lo sbattimento e i rischi di agire sul form per modificare l'url di uscita?:? :mmm:

    Google non segue i form, e non è solo una questione di bellezza. I motori è vero che leggono i parametri, ma è chiaramente risaputo che amano e digeriscono url quanto più semplici possibili. Quindi meno parametri ci sono meglio è, da qui nasce la scelta del rewrite.


  • Super User

    eLLeGi che tipo di controllo potrei mettergli perchè non ho capito bene...
    Thank U


  • User Attivo

    @stable said:

    eLLeGi che tipo di controllo potrei mettergli perchè non ho capito bene...
    Thank U

    Nel form aggiungi ad esempio

    <input type="hidden" name="dalform" value="1">

    e invece nella pagina metti

    
    if ($_GET['dalform']="1") {
    //Qui dentro ci metti il codice per fare il rewrite che ti ho dato prima
    }
    
    

    per cui solo quando la richiesta proviene dal form lui effettua il redirect convertendo l'url "lunga" in url rewritata.
    Se invece chiami l'url rewritata direttamente resterà immutata.
    Fammi sapere.
    Ciao,
    Giuseppe


  • Super User

    Lo provo e ti faccio sapere


  • Super User

    Niente, mi da sempre lo stesso problem 😞


  • User Attivo

    @eLLeGi said:

    Google non segue i form, e non è solo una questione di bellezza. I motori è vero che leggono i parametri, ma è chiaramente risaputo che amano e digeriscono url quanto più semplici possibili. Quindi meno parametri ci sono meglio è, da qui nasce la scelta del rewrite.

    Ma google quella url con i parametri non la vedrà mai proprio perchè generata da un form. Stable ha già sistemato con l'url rewrite i propri link che adesso non hanno più parametri. Il suo problema è con i link generati dai form che i motori, a quanto so, non seguono quindi non c'è una reale necessità di mettere mano alle url dei form.

    Cmq basta che usi il metodo POST anzichè GET e allora di parametri in url proprio niente :yuppi:

    Metti il metodo POST nel form e come action mandi ad una pagina che effettua la ricerca e fai il redirect normale alla pagine con il link come vuoi tu

    Ad esempio il form ha come action search-redirect.php, questa pagina non fa niente altro che prendere il paramentro *citta * inviato dal form in get or post e fa un normale redirect php al link (hotel-milano.php) come lo vuoi te senza parametri.


  • User Attivo

    @centix said:

    Ma google quella url con i parametri non la vedrà mai proprio perchè generata da un form. Stable ha già sistemato con l'url rewrite i propri link che adesso non hanno più parametri. Il suo problema è con i link generati dai form che i motori, a quanto so, non seguono quindi non c'è una reale necessità di mettere mano alle url dei form.

    Cmq basta che usi il metodo POST anzichè GET e allora di parametri in url proprio niente :yuppi:

    Metti il metodo POST nel form e come action mandi ad una pagina che effettua la ricerca e fai il redirect normale alla pagine con il link come vuoi tu

    Ad esempio il form ha come action search-redirect.php, questa pagina non fa niente altro che prendere il paramentro *citta *inviato dal form in get or post e fa un normale redirect php al link (hotel-milano.php) come lo vuoi te senza parametri.

    Ma il redirect del vecchio url si deve fare non perchè google segua il form, ma per correttezza di forma: metti che un utente voglia mettere in bookmark l'url si troverà il vecchio indirizzo, peggio ancora se quell'url viene reso pubblico tramite qualche referer o tramite link, prima o poi google potrebbe indicizzarlo e creare un duplicato di pagina.


  • User Attivo

    ops, postato due volte per errore:

    Vabbè approfitto per dire a stable che se ha bisogno di aiuto, possiamo spostarci nel forum del php o in privato, ora non è più un problema di posizionamento.


  • User Attivo

    Ma perchè non inserisci un controllo sull'url?

    Se l'URL contiene search.php?citta= allora fai il redirect