[box type=”info” size=”large” border=”full”]Versione aggiornata e attualizzata di un articolo originale del 20 luglio 2009[/box]
Perché è importante avere permalink ben strutturati?
- È amichevole per i visitatori
- È utile all’ottimizzazione sui motori di ricerca.
Non necessariamente in quest’ordine, dipende dall’importanza che si da ai propri visitatori ed ai motori di ricerca.
Io nel mio piccolo cerco di dare la giusta importanza ad entrambi, ed ho scelto quello che potrebbe essere definito un compromesso.
È una scelta ragionata ma pur sempre personale, e possono esserci altre considerazioni da fare.
Il permalink migliore? Dipende…
Parliamo di permalink, che è un termine che va bene per tutto, ma dato che parliamo anche di WordPress, ogni riferimento è per le sue impostazioni dei Permalink.
Se andiamo a guardare quello che scrivono in rete gli esperti SEO, la soluzione migliore per l’ottimizzazione per i motori di ricerca dovrebbe essere una cosa del genere:
/%post_id%-%postname%/
Io per il mio blog preferisco la versione postname. WordPress la chiama “Nome articolo”, ma non è detto che corrispondano. Ma questo lo vediamo più avanti. La trovo più semplice e immediata:
/%postname%/
In certi casi può essere utile anteporre la categoria al postname. Ad esempio in un Ecommerce, dove le categorie potrebbero corrispondere ai settori merceologici, o ad un sito di IT con specifiche categorie di interesse. Alle volte il permalink diventa lungo una quaresima, può non piacere, ma potrebbe essere utile sia al visitatore, per orientarsi, che alla SEO. Si ottiene così:
/%category%/%postname%/
Altrimenti, se nel blog ci sono più autori a firmare gli articoli, e non stiamo parlando di un WordPress in modalità multisite, si potrebbe valutare anche la soluzione del nome dell’autore prima del postname:
/%author%/%postname%/
Il postname non è il titolo.
Il titolo dell’articolo è importante. Deve essere chiaro al visitatore, e possibilmente utile al motore di ricerca.
La regola SEO non vuole che sia più lungo di 60 caratteri, ma ce n’è abbastanza per essere molto descrittivo. Il permalink troppo lungo non va bene, è brutto e scomodo, meglio perciò togliere tutto il superfluo e lasciare solo il minimo necessario.
Io di solito uso titoli che spero siano utili ai visitatori, se riesco a metterci le keyword che mi interessano per Google bene, ma se questo va a complicare la vita del lettore lo evito. Mentre per i permalink penso più ai motori di ricerca, brevi e con le keyword che mi interessano.
Ecco perché prima ho scritto che titolo e postname non devono essere necessariamente uguali.
Ma il rewrite funziona?
Di solito il rewrite, ovvero quel modulo del server web che permette la riscrittura delle URL, è attivo di default in tutte le installazioni. Qualche anno fa magari no. Se il rewrite non è attivo, o non funziona bene, non funzionano nemmeno i permalink.
Nel caso, rivolgersi (o prendersela) con il proprio fornitore di hosting.
E se un domani vogliamo cambiare i permalink?
Metti che all’inizio abbiamo pensato di mettere la data nei permalink. Dopo qualche centinaio o migliaio di articoli cambiamo idea, e vogliamo solo il postname. Si può fare?
Sì, i permalink possono essere cambiati in qualsiasi momento.
WordPress è intelligente, il suo motore memorizza tutti questi cambiamenti e risolve sempre i nuovi link.
Fino a qualche aggiornamento fa di WordPress, cambiare i permalink ad un blog avviato, magari con molti articoli, poteva incidere pesantemente sulle prestazioni del sistema. Con la versione 3.3 di WordPress hanno fatto importanti modifiche in questo senso, tanto che non è praticamente più un problema.
Ci dobbiamo solo preoccupare che il passaggio dal vecchio permalink al nuovo avvenga con un codice di risposta 301, che tradotto per gli umani significa che il link è stato definitivamente spostato. È importante per i motori di ricerca, per non perdere l’indicizzazione faticosamente guadagnata.
A questo si può ovviare in due modi:
- A manina, intervenendo sul file .htaccess a suon di regole di rewrite ed espressioni regolari.
- Grazie ad uno dei tanti immancabili plugin a disposizione: un paio giusto per gradire:
- Se lo state già usando per altre cose, Redirection va bene (qui lo abbiamo valutato per gli errori 404). Ma non è molto più facile della soluzione a manina sul .htaccess.
- Comodissimo invece il plugin scritto da Andrea Cardinali, Cardy Redirect Plugin. Non richiede nessun intervento a parte l’installazione, fa tutto lui.
Credo di non aver dimenticato nulla. Tu hai deciso che permalink usare?
46 risposte
Salve sign. Roberto,
ho un problema che affligge il sito che curo.
In particolare quando passo da una categoria ad un’altra o da un prodotto ad un altro spesso e volentieri la pagina rimane su quella precedentemente visitata ma nella barra dell’indirizzo il tutto risulta corretto tant’è che cliccando il pulsante aggiorna del browser mi restituisce la pagina corretta.
Questo succede da più browser tant’è che in più persone mi hanno comunicato il problema.
Non mi si presenta invece con la modalità incognito di chrome.
Da cosa può dipendere?
Mi può dare gentilmente lumi?
Grazie mille
Angelo
Ciao Angelo, così ad occhio e croce direi un malfunzionamento del sistema di cache, o qualche impostazione sbagliata nello stesso.
rob
Buongiorno Roberto,
ho ancora problemi con il sito, se si cliccano i link questi risultano non funzionanti, rispediscono sulla stessa pagina caricata inizialmente.
Mi da una dritta su i tentativi da fare per scovare il problema?
Può dare una controllata?
Grazie mille
Angelo Saponaro
Se resettando i permalink non funziona, hai qualche problema con il tema o qualche plugin.
rob
Salve a tutti, scusate se mi accodo alla discussione…
io avrei necessità di modificare la struttura dei permalink di woocommerce… in pratica da
/prodotto/%product_cat%
a
/%product_cat%
ma quando salvo mi ritorna sempre la struttura /prodotto/%product_cat%
Qualche suggerimento?
Grazie
WooThemes è abbastanza chiara su questo punto, ma ci sono diversi plugin che fanno questa operazione per motivi SEO, credo che uno dei più utilizzati sia questo Perfect SEO.
Grazie 1000
salve sul mio sito, un piccolo giornale utilizzo wordpress 4.2. All’inizio per gli articoli utilizzavo la formula …/yyyy/mm/dd/post_name poi ho utilizzato la formula senza la data. Quale conviene usare? Devo usare una base per i permalink con le categorie prima del nome del post?
ciao grazie!
Ciao, ogni sito c’ha i permalink che si merita.
Mi spiego meglio, io ho un blog senza esigenze particolari, e il solo titolo del post mi va più che bene. La base delle categorie anche qui dipende dal sito, per un blog “argomenti” a mio avviso va più che bene, per un quotidiano di cronaca nera magari no.
Lo stesso per la data, magari per un sito di news il riferimento cronologico è importante, per un sito di discussioni letterarie invece no.
È vero che poi c’è anche la SEO da guardare, che alla fine vuol dire link amichevoli, ma la navigazione viene prima.
rob
Ciao Roberto
premetto che non so nulla di programmazione, ho iniziato a creare un sito per lo studio http://www.studiocastello.it ho incontrato un problema che non riesco a risolvere e non ho trovato nessuna indicazione in rete: quando scelgo una categoria le pagine me le richiama ma se scelgo gli articoli (corsi,o altro) mi da errore 404.
Cosa posso fare ?
Grazie Andrea
Ciao Andrea, sembra un problema di rewrite, così ad occhio e croce, ma senza guardarci dentro è difficile dire di più.
rob
Cosa posso fare per verificare se è un problema di rewrite ?
Andrea
Ciao,
hai consigli per i permalink da impostare per le pagine generate con WooCommerce?
Ciao Francesca, a mio parere valgono le stesse considerazioni per i post e le pagine.
L’unica differenza è l’utilizzo di una base chiara (tipo quella delle categorie per capirci) per differenziare senza possibilità di dubbio lo store dal blog o altre sezioni del sito.
rob
Ciao, non sono espertissimo anzi… Ti volevo chiedere questo: se riscrivo i permalink per non perdere le pagine indicizzate basta installare il plugin Cardy Redirect Plugin e fa tutto da solo ?… cioè se un visitatore clicca nell’indice di google su un articolo che prima era indicizzato http://www.miosito/p=2393 riesce ad aprire l’articolo http://www.miosito/esempio (se l’ho riscritto così) ? oppure gli da una pagina di errore ?
Momento, il problema sussiste se tu cambi il permalink, tra due tipi basati sul rewrite, ma non c’è se il vecchio link è la richiesta PHP originaria di wordpress senza il rewrite, quei link ai post che finiscono con una roba simile a questa: “?p=12356”
Questo tipo di link funziona sempre, con o senza il rewrite. Non ha bisogno di essere corretto, viene sempre indirizzato al permalink corretto.
Spero di essermi spiegato bene 🙂
rob
Ho fatto il rewrite , ma appena salvo mi bdece che devo modificare il fite htaccess, cosa che non so fare, e non mi apre piu nessuna pagina del sito tranne la home. Come posso fare ….. ? grazie
significa che wordpress non riesce a modificare il file .htaccess che dovrebbe essere nella cartella principale del blog.
O via FTP cambi i permessi al file, in modo che wordpress possa scriverlo, oppure modifichi il file tu stesso, inserendoci dentro quello che wordpress ti presenta nella finestra di errore.
rob
Sempre interessante questo articolo. E’ trascorso un po di tempo ed ora funziona tutto. Però questa paginetta me la metto tra i preferiti!
Grazie ancora Rob!
ciao, e posibile avere un permalink
http://www.sitename.it/id/www.kijiji.com senza che punto cambia con –
Ciao Cristian, no non è proprio possibile usare punti dopo l’estensione del dominio
rob
@mark..
spiegati meglio non ho capito il problema.
Ciao a tutti c’è qualcuno che mi sa dire come inserire un’url esterno originale nel testo di un post visto che il permalink me lo modifica e quindi mi trasforma un collegamento che mi da errore .
Il link esterno è una queri ad un sito permalink modificando la queri non mi fa più raggiungere il sito esterno
Infatti, pensavo anch’io una cosa del genere. Bisognerebbe lavorare sullo script che genera l’url di categoria. Sai in quale file e in quale cartella si trova per caso?
Sergio
non conosco worpress così a fondo, anche perché preferisco non mettere le mani nel core ma limitarmi alle funzionalità che posso controllare sul tema, dove di solito c’è un functions.php (o una cartella functions) dove si possono fare tutte le modifiche che si vuole senza paura di devastare l’applicazione.
mi viene pero’ da pensare che dentro wp-includes ci sia più o meno quello che cerchi.
rob
Ciao Rob!
Avrei una curiosità:
Ho da poco installato l’ultima versione di WordPress. 2.9.2 XXL.
Ho adottato il permanent link nella versione
/%category%/%postname%
E funziona…
L’inconveniente è nel momento in cui clicchi sul link della categoria corrispondente (esempio news) l’url mi appare in questa versione:
category/news
Per evitare l’uso della directory “category” ho provato a usare come base della catagoria un’altra keyword, ma pare che abbia difficoltà a trovare le pagine nel momento in cui riscrive l’url:
altraurl/news
Cosa che invece non succede, invece, utilizzando come base “categoria”. Credo possa trattarsi di un baco.
Mi chiedevo, a questo punto, per baypassare il problema, se fosse possibile omettere nella rescrittura delle url la parola
“category” utilizzando però sempre la versione:
/%category%/%postname%
in maniera da poter avere, per ogni link alla categoria,
la verione
/news
in luogo di category/news
Ho provato a utilizzare la stessa logica che hai segnala in un precedente post per il caso del “tag”, cioè
RewriteRule ^/tag/(.+) http://mioblog.com/$1 [R=301,L]
quindi aggiungendo
RewriteRule ^/category/(.+) http://mioblog.com/$1 [R=301,L]
ma non funziona né l’uno né l’altro.
Come posso risolvere l’inconveniente secondo te?
Saluti
Sergio
Ciao Sergio,
non può funzionare perché non esiste un link che punta a /news (inteso come link di categoria)
la faccenda si fa più complessa, secondo me bisognerebbe creare una nuova funzione per i link delle categorie che preveda il solo nome della categoria, una volta fatto puoi fare tutti i rewrite che vuoi.
rob
Per fare invece il rewrite in htaccess dei tag in modo da avere la seguente situazione:
da
mioblog.com/tag/pippo
a
mioblog.com/pippo
Sapete come si fa?
esattamente come descritto sopra:
RewriteRule ^/tag/(.+) http://mioblog.com/$1 [R=301,L]
rob
Ho capito… ci rinuncio, pazienza.
Semmai quando installerò Snow Leopard sul server proverò di nuovo.
Comunque grazie.
Questa è ciò che è scritto in htaccess..
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^/index.php/(.+) http://bareden.sytes.net/$1 [R=301,L]
# END WordPress
Penso anche io che possa dipendere dalla configurazione di Apache…
Però io non ho toccato nulla, ho solo attivato il mod rewrite…. non saprei proprio dove mettere le mani.
Guarda, io ho degli htaccess con decine e decine di regole, quello di tevac supera credo il centinaio di regole abbondanti. Lo stesso apache di tevac gestisce una 10ina di blog in wordpress, e in nessuno ho installato supercache o come diavolo si chiama.
Chiaro che apache deve essere comunque ottimizzato, la configurazione di default specie su Mac OS X non è il massimo, specie se si utilizza ancora la versione 1.3.x, occorre vedere quanti processi gestisce, come si comporta il sistema quando vengono chiamate le pagine, se il load average si alza molto e altre cosine del genere.
Insomma non è banale…
Purtroppo dopo avere fatto le modifiche al modulo rewrite, rendendolo attivo, il tempo di caricamento delle pagine è diventato impossibile… ho dovuto rimettere tutto come prima :-((
Non credo sia un problema del rewrite, a meno che tu non abbia scritto male qualche regola, piuttosto qualcosa che non è configurato bene in apache. difficile dirlo pero’ così…
Ancora grazie ROBBBBBBBB!!!!
Immenso, grandissimo ROB!!!!!
Funziona!!!!!
seguirà fattura… 😉
tieni presente che forse avrai altri permalink da modificare, categorie tags etc, ma basta che fai delle rules ad arte partendo da quella sopra.
rob
Prima la URL era composta in questo modo…
http://bareden.syte.net/index.php/nome dell’articolo
ora
http://bareden.syte.net/nome dell’articolo
se potessi evitare il plugin sarebbe meglio….
COme ti ho detto non sono pratico e non so cosa siano le espressioni regolari.
Potrei fare solamente un copia e incolla, se mi scrivi la formula 🙂
Per quel tipo di URL una cosa del genere nell’htaccess dovrebbe funzionare:
RewriteRule ^/index.php/(.+) http://bareden.sytes.net/$1 [R=301,L]
Mettila alla fine dell’htaccess, dopo la parte scritta da wordpress.
rob
La modifica di AllowOverride è necessaria affinché il rewrite funzioni.
Ora devi risolvere il problema dei 404 con delle regole di rewrite, ma bisogna sapere la struttura originale, ossia che cosa c’era prima come URL e cosa c’è adesso, molte cose le puoi semplificare con le espressioni regolari.
C’era anche un plugin che aiutava in questo, proprio per evitare problemi in caso di modifiche ai permalink, ma non me lo ricordo in questo momento…
rettifico, il plugin l’avevo indicato alla fine dell’articolo, opsss…. 😉
Grazie Rob….
SOno uno stupido. Sono andato a vedere nel File httpd.conf ed ho trovato che…
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
Ho cambiato in…
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
Ora mi permette di togliere index.php
Ora il problema è che nell’archivio dei motori di ricerca c’è un’altra URL.
Quindi usciranno fuori una catastrofe di errori 404.
Quella regoletta che hai scritto sopra io non l’ho capita…. bada bene, son io che sono scarfso in queste cose….
Cosa dovrei scrivere esattamente per ovviare a questo problema?
Il mio htaccess è questo…
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Ciao Rob…
Volevo chiederti perchè, se non inserisco index.php davanti alla stringa della struttura personalizzata, mi restituisce l’errore 404?
Non dovrebbe, sbagli per caso sintassi?
Prova a postarla
rob