• User Attivo

    Indicizzazione pagine dinamiche .php e miglioramento url

    Salve,

    Allora io ho una funzione che si chiama cerca.php e come parametro passo il nome della struttura

    cerca.php?nome=Agriturismo Asburgico

    (il nome della struttura lo prelevo in automatico nel db), nell'url ottengo un qualcosa simile questo:

    cerca.php?nome=Agriturismo%20Asburgico

    Utilizzando l'url rewriting .htacces conto di eliminare il ? con un / e mettere al posto del %20 un - .

    Volevo fare due domande:

    1-posso in qualche modo ottenere un url di questo tipo www.miosito.ext/localita/tipo-struttura/nome-struttura modificando la funzione cerca? Eventualmente cosa mi suggerite?

    2-Dal db in automatico ottengo una lista di strutture per ognuna c'è un link tipo cerca.php?nome=Agriturismo%20Asburgico in cui utilizzo il file cerca.php, vi volevo chiedere se google indicizza tutte le pagine che ottengo visitando il link, in pratica mi interessa avere una pagina indicizzata per ogni struttura nel mio db....

    Grazie mille... :ciauz: :ciauz: :ciauz: :ciauz:


  • Community Manager

    Ciao Isidoro,

    in questi casi, di solito, si nasconde agli spider la funzione cerca e si crea una struttura di link ad albero, statica, che arriva fino alle strutture ricettive.

    Regione > Provincia > Paese > Struttura.

    Rendendo il sito navigabile anche in questo senso sei apposto.


  • User Attivo

    grazie giorgio....

    potresti darmi dei consigli su come farlo...

    :ciauz: :ciauz: :ciauz: :ciauz:


  • Community Manager

    @isidoro81 said:

    grazie giorgio....

    potresti darmi dei consigli su come farlo...

    Certamente 🙂

    Dovresti riuscire a creare una struttura del URL in questo modo leggendo dal DB:

    sito.com?pagina.php?regione=calabria&provincia=reggio&paese=riace&struttura=hotel-federica

    Avendo questo url, crei una pagina che estrapoli e mostri nella pagina il contenuto delle variabili.

    A quel punto puoi fare un rewrite del tipo

    sito.com/calabria/reggio/riace/hotel-federica.html

    In quel caso tu sai esattamente cosa hai nel Db ed una volta fatto il rewrite sai come linkare le pagine.

    Ci sei fino a qui?

    Se ci sei, passo la palla a chi è più esperto nel rewrite, se non ci sei fammi sapere cosa non riesci esattamente a fare 🙂

    GT


  • User Attivo

    Grazie per il prezioso aiuto.. come sempre del resto....

    La struttura dell'url l'avevo pensata come mi hai suggerito te ed è di questo tipo

    http://www.pitiglianodoc.com/cerca.php?localita=nomelocalita&tipo=tipostruttura&nome=nomestruttura

    i vari script che ho fatto funzionano bene, puoi vederlo visitando il sito www.pitiglianodoc.com, mi manca la parte dell'url rewriting e il modo di risolvere alcuni problemini... scusa se ti stresso un po' ma siccome ho in mente di utilizzare gli script anche per altri miei siti è importante che tutto sia ok...

    Il rewrite lo vorrei proprio come hai detto te, in modo che la struttura sia ad albero, se poi riesco a nascondere il cerca.php anche meglio... Solo che oltre alla regola non ho capito alcune cose:

    La funzione cerca.php la chiamo da un url passando come parametri quelli che recupero con una query dal db, ecco il frammento di codice:

    <a href="cerca.php?localita=<?php echo $row->localita; ?>&tipo=<?php echo $row->tipo; ?>&nome=<?php echo $row->nome; ?>

    poi ovviamente li recupero con il get nel file cerca.php, quello che vorrei sapere è come devo modificare questo frammento di codice dopo aver fatto il rewrite.

    Infine vorrei sapere come gestire la presenza di spazi nel nome della struttura, nella colonna nome del db ho il nome dell struttura con degli spazi (tipo Agriturismo Il Laghetto), questo fa si che al momento attuale senza rewrite al posto dello spazio nell'url ci sia un %20, ovviamente vorrei un - ...

    Fammi sapere e scusa per il disturbo...

    :ciauz: :ciauz: :ciauz:


  • Community Manager

    Figurati Isi, hai fatto un bel lavoro e merita una giusta ottimizzazione degli URL.

    Per questo non mi sento di darti consigli, aspetto chi è più preparato di me nell'URL REWRITE 😉


  • User Attivo

    grazie....

    avevo un db fra le mani e mi è venuto in mente di generare un portalino con una pagina dedicata per ogni struttura del db, così ieri ho fatto questi script ed ottimizzato un menù ad albero in css, così tutti i link importanti saranno direttamente linkati alla home...

    ti chiedo solo di dirmi come gestire l'url in questo frammento di codice dopo il rewrite

    <a href="cerca.php?localita=<?php echo $row->localita; ?>&tipo=<?php echo $row->tipo; ?>&nome=<?php echo $row->nome; ?>

    io non cho capito bene quello che fa il rewrite e se questo frammento lo devo lasciare uguale oppure modificare....

    :ciauz: :ciauz: :ciauz:


  • Bannato Super User

    Ciao Isidoro,

    Per il rewrite puoi provare con questo [url=http://www.webmaster-toolkit.com/mod_rewrite-rewriterule-generator.shtml]tool online

    ho provato il tuo URL e mi restituisce questo codice per l'.htaccess :

    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule cerca/&#40;.*&#41;/&#40;.*&#41;/&#40;.*&#41;/&#40;.*&#41;/&#40;.*&#41;/&#40;.*&#41;/$ /cerca.php?$1=$2&$3=$4&$5=$6
    

    non l'ho provato, ma a prima vista mi pare possa andare bene se ho capito la struttura dell'url che vuoi avere, il formato dell'URL che dovrebbe uscire è questo:

    http://www.pitiglianodoc.com/cerca/localita/nomelocalita/tipo/tipostruttura/nome/nomestruttura /

    Per gli spazi invece puoi usare la funzione strreplace di php per mettere il trattino al posto degli spazi:

    
    $stringa-con-trattino=strtr&#40;$stringa-senza-trattino, " ", "-"&#41;;
    
    

    devi quindi prima estrarre dall DB stringa-senza-trattino e poi elaborarla con la funzione strtr.

    Ho fatto tutto al volo e non ho ben controllato, se ci dovesse essere qualche errore fammi sapere che lo aggiustiamo ;).


  • User Attivo

    Ciao Marcello,

    Grazie per l'aiuto e per la pazienza...

    La regola postata non funge e non mi fa recuperare bene i dati dal db

    http://www.pitiglianodoc.com/cerca.php/localita/pitigliano/tipo/agriturismo/nome/Agriturismo Eden

    In realtà non farebbe neanche quello che ho in mente io infatti vorrei passare
    da questo indirizzo

    http://www.pitiglianodoc.com/cerca.php?localita=pitigliano&tipo=agriturismo&nome=Agriturismo Eden

    a questo (nascondendo la funzione cerca sarebbe il top)

    http://www.pitiglianodoc.com/pitigliano/agriturismo/Agriturismo-Eden.htm

    Ieri avevo chiesto aiuto anche su html.it e mi avevano dato questa regola, che in ogni caso mi dava problemi

    RewriteEngine on
    RewriteBase /
    RewriteRule ^cerca/([^/]+)/([^/]+)/([^/]+).html cerca.php?localita=$1&tipo=$2&nome=$3

    Oltre alla regola mi interessa come gestire questo frammento di codice

    <a href="cerca.php?localita=<?php echo $row->localita; ?>&tipo=<?php echo $row->tipo; ?>&nome=<?php echo $row->nome; ?>

    Non ho ben capito come e quando entra in funzione l'url rewriting, per recuperare correttamente dal db il nome della struttura devo far pervenire alla funzione cerca.php il nome della struttura così come è nel db, quindi con spazi. Dove è che devo gestire questa cosa?

    Nel parametro da passare mi serve con gli spazi, nell'url la vorrei con trattino...

    Non so se mi sono spiegato bene, in ogni caso grazie per la vostra gentilezza e disponibilità, se non sono stato chiaro fatemelo sapere che provo a spiegarmi meglio...

    Un saluto :ciauz: :ciauz: :ciauz:


  • User Attivo

    Ciao ragazzi...

    qualora nessuno di voi mi possa aiutare a risolvere il problema spiegato sopra potreste indicarmi risorse sull'url rewriting e magari consigli su a chi chiedere....

    Ciao e grazie per l'aiuto...

    :ciauz: :ciauz: :ciauz: :ciauz:


  • Bannato Super User

    Dunque, per il rewrite ho capito cosa intendi, bisogna però che me lo guardi meglio prima di darti una soluzione.

    Per il trattino puoi lavorare a livello di script, con il trattino quando fai l'url e senza quando recuperi i dati dal DB, non so se si può fare anche da .htaccess, probabilmente sì, bisogna che guardo un po' 🙂

    Direi che dovresti cominciare per capirci di più dallo studio delle regexp

    alcuni link:

    http://www.marcopagnanini.it/articoli/regexp.php
    http://www.fogliata.net/2006/05/27/risorse-htaccess/


  • User Attivo

    ok grazie marcello...

    se mi dai un'occhiata alla regola e ai parametri da passare nell'url te ne sarò infinitamente grato...

    io intanto darò un'occhiata ai link che mi hai dato e inizierò a studiare un po' le espressioni regolari.....

    :ciauz: :ciauz:


  • User Attivo

    grazie a giorgio e marcello per l'aiuto...

    sono riuscito a risolvere tutto, grazie anche ai preziosi suggerimenti di luca...

    a chi dovesse servire la regola che ho usato per gestire l'url rewriting è:

    RewriteEngine On
    RewriteBase /
    RewriteRule ^([^/]+)/([^/]+)/([^/]+).htm /cerca.php?localita=$1&tipo=$2&nomet=$3

    fra i parametri passo il nome della struttura, lo passo con - poi utilizzo la funzione strtr del php per riportale il nome a una forma conforma a query nel db, quindi con gli spazi....

    Spero che il mio esempio possa essere di aiuto a chi ha problemi simili....

    :ciauz: :ciauz: :ciauz: [/quote]


  • User

    Ciao a tutti ho un problema per quanto riguarda il mio sito, se andate su aste-gratis.it/Strumenti-Musicali-240.html e cliccate una asta il browser la vede così
    aste-gratis.it/Cassa Marshall 400 watt jcm lead 800 1982-3.html
    praticamente il titolo dell?asta non mi mette i trattini negli spazi il titolo dell?asta sarebbe
    Cassa Marshall 400 watt jcm lead 800 1982 e dovrebbe essere
    Cassa-Marshall-400-watt-jcm-lead-800-1982.html
    praticamente dalla home page se clicco un asta appare corretto con i trattini, invece se clicco una categoria ad esempio strumenti musicali
    **aste-gratis.it/Strumenti-Musicali-240.html **

    e clicco un asta non mi mette i trattini ma vedo il simbolo% con questo errore nel browser
    The requested URL /Cassa Marshall 400 watt jcm lead 800 1982-3.html was not found on this server.

    il mio file htaccess è così

    DirectoryIndex index.php

    secure htaccess file

    <Files .htaccess>
    order allow,deny
    deny from all
    </Files>

    disable directory browsing

    #Options All -Indexes

    disable access to logs/template files

    <Files ~ ".(log|tpl)$">
    order allow,deny
    deny from all
    </files>

    RewriteEngine On
    RewriteBase /

    RewriteRule ^([a-zA-Z0-9--]+)-([0-9]+).html$ browse.php?id=$2
    RewriteRule ^([a-zA-Z0-9_-]+)-([0-9]+).html$ item.php?id=$2

    RewriteEngine On
    RewriteBase /
    RewriteRule ^sitemap.xml ./sitemap.php [L,QSA]

    cosa posso fare?