Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    322

    Semplice sitemap dinamica in php

    Ciao,
    ho realizzato un semplicissimo script php per una sitemap dinamica, una semplice query che legge da db e poi genera i link nella sitemap formato xml (con htaccess ottengo l'estensione xml).

    Lo script funziona, prima di far generare i link alla query tolgo tutti i caratteri che potrebbero non far funzionare il codice xml, esempio:

    str_replace(":", "", $link);

    eppure accade che, come in questo caso, il file xml riporta un errore facendo riferimento ai due punti ( : ) - perchè se li ho sostituiti con nulla ( "" ) ?!

  2. #2
    con htaccess ottengo l'estensione xml
    cosa intendi? per creare un xml in modo dimamico puoi semplicemente usare header():

    Codice PHP:
    header ("Content-Type:text/xml"); 


    il file che genera la sitemap è online? puoi mettere il link?

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    322
    Ciao.
    Quello dell'estensione non è un problema, il problema èmi ritorna errore quando incontra determinati caratteri: problema che teoricamente non dovrebbe presentarsi in quanto eseguo str_replace dei caratteri speciali.

    <?php
    echo"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
    <urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">";
    @$query = mysql_query("SELECT title FROM table");
    while(@$row = mysql_fetch_array(@$query))
    {
    $title = $row['title'];
    $link = str_replace(":", "", $link);
    etc. altri str

    echo"<url>
    <loc>$link.htm</loc>
    </url>";
    }
    echo"</urlset>";
    ?>

  4. #4
    hai già provato questa?

    http://php.net/manual/en/function.urlencode.php

    es.

    Codice PHP:
    <?php $query_string 'foo=' urlencode($foo) . '&bar=' urlencode($bar); echo '<a href="mycgi?' htmlentities($query_string) . '">'?>

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    322
    funziona... (grazie)
    però mi sono accorto che (altro problema) con più sitemap con htaccess non riesco a far funzionare le altre sitemap (ce n'è più di una)...
    viene richiamata solo la prima.

    praticamente vorrei far assumere alle sitemap l'estensione xml...

  6. #6
    mm, non so se ho capito bene cosa intendi, ma posso chiederti perchè utilizzi l'htaccess? Forse sarebbe più semplice usare header(), se possibile..

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    322
    ci sono più sitemap:
    la sitemap index
    - sitemap1
    - sitemap2
    etc
    in php funziona l'elenco degli url letti da db, vorrei però che le sitemap (file .php) assumessero l'estensione .xml

    vorrei che sitemap1.php sitemap2.php fossero visualizzate come sitemap1.xml sitemap2.xml

    avevo pensato al mod_rewrite con htaccess per cambiare l'estensione, ma andando a richiamare le altre sitemap (2, 3, etc.) risulta visibile sempre e solo la prima.

    In htaccess avevo scritto:
    RewriteRule ^(.*).xml$ sitemap1.php
    RewriteRule ^(.*).xml$ sitemap2.php
    RewriteRule ^(.*).xml$ sitemap3.php

    ma è solo la sitemap1.php (visualizzata come sitemap1.xml) che leggo anche quando richiamo sitemap2.xml e sitemap3.xml

  8. #8
    se usi la modifica dell'header come ti ho suggerito, ottieni esattamente questo effetto (un file .php viene trattato dal browser come un file .xml) e tra le altre cose è decisamente più performante, visto che lasci fuori l'htaccess

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    322
    Il file funziona correttamente ma solo se richiamo: sitemap.php

    a me serve sitemap.xml

  10. #10
    ok, ho capito cosa intendi. Credo sia sbagliato quanto scrivi nel file htaccess,
    perchè così com'è con la prima riga gli stai dicendo di portare qualsiasi file .xml su sitemap1.php.

    Prova una cosa del genere:

    codice:
    RewriteRule ^sitemap1.xml$ sitemap1.php [L] 
    RewriteRule ^sitemap2.xml$ sitemap2.php [L] 
    RewriteRule ^sitemap3.xml$ sitemap3.php [L]

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.