2009-08-23 17 views
9

Sto sviluppando una webapp usando codeigniter (mvc) e php. Mi chiedevo come creare una sitemap per i motori di ricerca quando il mio contatto è dinamico? Esistono best practice per questo o esiste un modo per automatizzare il processo? Chiedo perché i contenuti verranno aggiunti costantemente e rapidamente, quindi mi piacerebbe che la sitemap fosse recente. GrazieSitemap per contenuti dinamici?

Aggiornamento: per rispondere alla mia domanda, il tipo di sito che sto creando è un sito di tipo blog pubblico dove gli utenti postano articoli.

Update2: Solo per elaborare la mia confusione: potrei non capire esattamente come è strutturato un sitemap. Ad esempio, in un sito come StackOverflow, quando gli utenti aggiungono nuove domande (e quindi vengono create nuove pagine) la sitemap cambia e deve essere nuovamente inviata? Quanto è importante per un sito come questo avere persino una mappa del sito?

risposta

0

A seconda del tipo di sito che si sta creando, è possibile farlo in diversi modi.

Ad esempio se si stava creando un sito di notizie. Potresti avere una singola pagina che si collega al permalink di ogni articolo di notizie. Se potessi dettagliare che tipo di sito/i suoi contenuti potremmo aiutare meglio.

+0

Finché si fornisce un modo per raggiungere ogni pagina attraverso la navigazione del sito in modo coerente si dovrebbe andare bene. O vuoi supportare google sitemaps? – chotchki

2

Ho una situazione simile alla tua, tranne che sviluppo in Zend Framework e Doctrine invece di Code Igniter.

Il modo in cui abbiamo risolto questo problema era la creazione di un modello di Sitemap che fungesse da Set nidificato di Doctrine. In pratica sono solo alcuni campi, come un id, parent_id, title, uri, creati, aggiornati. È possibile aggiungere più campi se necessario, ma questa è la premessa di base.

Quindi utilizziamo Zend_Navigation per eseguire il rendering di questo albero in un menu per il sito.

Zend_Navigation dispone anche di un metodo di supporto per la generazione automatica di una sitemap XML, pertanto disponiamo di un controller e di una vista configurati per il rendering di tale documento XML.

Quindi abbiamo scritto un plug-in di Zend Action Controller, che controlla il controller della sitemap e, una volta effettuati gli aggiornamenti, controlla l'ultimo aggiornamento e invia a Google che la sitemap è stata aggiornata.

Tutti questi concetti possono essere facilmente convertiti in CI, immagino.

Se non c'è un helper della vista mappa del sito in CI, è possibile utilizzare le classi di navigazione Zend, poiché Zend è disaccoppiato in modo approssimativo.

Oppure puoi semplicemente generare il documento xml con CI, utilizzando lo standard per le sitemap qui.

http://www.sitemaps.org/protocol.php

+1

Scrivi sitemaps in un file o semplicemente li memorizzi? Per elencare tutti gli URL o solo i più importanti una volta? Come fai ping a google? – Manuel

+1

Ciao Manuel. Puoi costruire progressivamente la tua Sitemap. Inizia con il più importante e continua ad aggiungere nel tempo. Probabilmente vorrai mettere in cache un file. Puoi eseguire il ping di google inviando una richiesta HTTP a www.google.com/webmasters/tools/ping?sitemap=sitemap_url e sostituendo sitemap_url con una versione codificata dell'URL dell'URL della tua Sitemap. – Travis

2

Supponendo che si sta cercando di creare una sitemap xml, html non a uno?

Non l'ho ancora fatto, e voglio provarlo presto, ma quello che vorrei fare è: impostare un cron job che chiama un percorso come esempio.com/index.php/sitemap. la funzione di indice nel controllore Sitemap eseguirà quindi una query per selezionare tutti i titoli di tutti i tuoi post + tutto ciò che è necessario per creare un url completo per tali voci e, poiché è un elemento richiesto nel protocollo sitemaps, quando la voce è stata aggiornata per l'ultima volta . se non si dispone di un campo nel db per questo potrebbe essere necessario aggiungerlo.

quindi è solo questione di scorrere i risultati e scrivere un file xml con la struttura corretta. mentre esegui il ciclo, devi anche decidere la priorità, changefreq e tutti gli altri elementi su base per voce.

ive ha anche esaminato la versione a pagamento di http://www.xml-sitemaps.com/ che dovrebbe fare tutto tranne l'impostazione del cron per te, a un prezzo molto buono e in esecuzione sul tuo server. Non penso che potresti sviluppare questo te stesso per un valore di 19,99 USD del tuo tempo. E, questa app informa anche i motori di ricerca di nuovi contenuti, un metodo per il quale non ho ancora delineato.

5

Anche se il contenuto è dinamico, si desidera che la Sitemap sia statica. Certo, aggiorna la mappa del sito una volta al giorno, se lo desideri, O aggiornalo ogni volta che pubblichi un nuovo post di blog ... ma non provi a crearlo nel momento in cui viene richiesto. Sarà un incubo nella performance.

Penso che la sitemap di Stackoverflow sia aggiornata giornalmente. Contiene le 50.000 pagine modificate più di recente. La sitemap aiuta con SEO (ottimizzazione dei motori di ricerca).

Ricetta per la generazione di sitemap over here

0

Un parametro update-frequency nella struttura del sito dice al motore di ricerca con quale frequenza una pagina web viene aggiornato.

Non confondersi con l'URL di una pagina perché può essere modificato tramite molti metodi.

Per StackOverflow, può essere questions.php?id=1317539 per questa pagina e, ad esempio, la frequenza di aggiornamento è impostato su un minuto per questions.php

Così ogni minuto, una nuova mappa del sito viene generato per il sito web StackOverflow.

Aggiornamento: This answer di Robert spiega cosa succede alla sitemap di Stack Overflow quando una nuova domanda viene aggiunta al sistema.

0

La soluzione migliore è quella di aggiungere al vostro apache .htaccess del file la seguente riga dopo RewriteEngine On

RewriteRule ^sitemap\.xml$ sitemap.php [L] 

e poi semplicemente avere un file sitemap.php nella cartella principale che sarebbe normalmente accessibile tramite http://yoursite.com/sitemap.xml, l'URL predefinito in cui tutti i motori di ricerca verranno innanzitutto ricercati.

Il file sitemap.php sarà qualcosa di simile

<?php header('Content-type: application/xml; charset=utf-8') ?> 
<?php echo '<?xml version="1.0" encoding="UTF-8"?>' ?> 
<?include_once('./myVariables.php'); ?> 

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
    <url> 
    <loc><?php echo $URL1; ?></loc> 
    <lastmod>2005-01-01</lastmod> 
    <changefreq>monthly</changefreq> 
    </url> 
    <url> 
    <loc><?php echo $URL2; ?></loc> 
    <lastmod>2005-01-01</lastmod> 
    <changefreq>monthly</changefreq> 
    </url> 
</urlset> 

funziona :)

Problemi correlati