I permalink e le URL personalizzate di WordPress.

E' passato un po' di tempo da quando ho scritto questo articolo.
Il mondo del digital è sempre in evoluzione e potresti trovare delle informazioni non più aggiornate.

Se utilizzate Wordpress per pubblicare dei contenuti nel web potreste avere bisogno di impostare il pattern di generazione dei permalink.

Per fare questo tipo di operazione dovete utilizzare il pannello di gestione dei permalink che vi permette di personalizzare la struttura dell'URL attraverso la valorizzazione del campo Custom Structure.

All'interno di questo campo dovrete andare ad inserire un percorso come ad esempio:%category%/%postname%.html, che andrà a settare le URL dei post come: nome categoria + nome del post con estensione html. personalizzare i permalink
Di seguito vengono elencati i valori che si possono impostare:

  • %year%: l'anno del post a 4 cifre
  • %monthnum%: il mese del post a 2 cifre
  • %day%: il giorno del mese a 2 cifre
  • %hour%: l'ora del post a due cifre
  • %minute%: i minuti del post
  • %second%: i secondi del post
  • %postname%: una versione codificata del titolo del post
  • %post_id%: l'id numerico del post
  • %category%: una versione codificata del nome della categoria
  • %author%: una versione codificata del nome dell'autore.

Se ridenominate delle categorie o avere bisogno di un sistema avanzato e più flessibile di gestione delle URL, potete anche utilizzare questa comoda plugin AskApache RewriteRules Viewer per l'editing del file .htaccess direttamente dal pannello di configurazione di Wordpress:

screenshop-editor-htaccess

Consigli ed esempi:

  1. Ricordatevi sempre che Wordpress per il suo funzionamento utilizza index.php e per questo al momento dell'installazione ci sono settate delle regole di default che è preferibile non modificare:
  2. # BEGIN WordPress
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    # END WordPress.

  3. Se la l'home page della vostra piattaforma non è direttamente nella root directory, ma è nella directory blog:

  4. RewriteCond %{HTTP_HOST} ^miosito.com
    RewriteRule ^(.*)$ http://www.miosito.com/$1 [R=301,L]

  5. Se volete eliminare i parametri dalle vostre URL:

  6. RewriteCond %{THE_REQUEST} ^GET /.*;.* HTTP/
    RewriteCond %{QUERY_STRING} !^$
    RewriteRule .* http://www.askapache.com%{REQUEST_URI}? [R=301,L]

  7. Se avete ridenominato una categoria o un file e volete che gli utenti vengano rediretti verso URL conformi al nuovo naming:

  8. RewriteRule /blog/vecchia-categoria/(.+) http://www.miosito.com/nuova-categoria/ [R=301,L]

    RewriteRule /blog/vecchio-permalink$ http://www.miosito.com/nuovo-permalink/? [R=301,L]

  9. Se volete congiurare il rischio di qualche loop infiinto per qualche regola errata:

  10. RewriteCond %{REQUEST_URI} ^/(stats/|missing.html|failed_auth.html|error/).* [NC]
    RewriteRule .* - [L]
    RewriteCond %{ENV:REDIRECT_STATUS} 200
    RewriteRule .* - [L]

  11. Se volete redirigere le richieste al feed dal vostro blog al servizio di FeedBurner:

  12. RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /(feed|wp-atom|wp-feed|wp-rss|wp-rdf|wp-commentsrss)(.+) HTTP/ [NC,OR]
    RewriteCond %{QUERY_STRING} ^feed [NC]
    RewriteCond %{HTTP_USER_AGENT} !^(FeedBurner|FeedValidator) [NC]
    RewriteRule .* http://feeds.askapache.com/apache/htaccess? [R=307,L]
    RewriteRule ^comments/?.*$ http://feeds.feedburner.com/apache/htaccess/comments [L,R=302]

Link utili:

Altri post che potrebbero interessarti:

  • Pingback: Widget SEO per Wordpress | Andrea Vit 's blog()

  • surfweb

    Buonasera.
    Sono arrivato sul tuo blog cercando su google una guida che mi permettesse di impostare l’etsensione .htm(html) nella pagine wordpress.
    Praticamente se metto l’estensione .htm dall’area amministrativa questa regola ha effetto solo sui post e non sulle pagine.
    Sapresti indicarmi come fare per ovviare a questo problema.
    Ti ringrazio anticipatamente.

  • ciao Surfweb, ottima domanda.
    Hai ragione, in effetti le pagine non possono avere l’estensione html e non hanno una gestione integraa dei permalink.
    Ma non disperare, c’è questo link, che forse potrebbe darti una mano 🙂
    http://wordpress.org/support/topic/167383
    Non l’ho ancora testato su versione aggiornata (qui fa riferimento a WP 2.5), ma credo che possa funzionare ugualmente…(magari tra qualche giorno ci faccio un paio di test 🙂 )

  • surfweb

    Ciao Andrea.
    Sei stato un fulmine a rispondermi. Non sai quanto ho cercato questa risposta e nessuna sapeva dirmi nulla a riguardo!!
    Ho provato proprio ora la soluzione da te proposta e funziona alla perfezione.
    Sul post di riferimento c’è scritto di aggiornare anche la struttura permalink nell’area amministrativa di wordpress altrimenti si rischia un errore 404. Io ho verificato e non succede nulla. Però non si sa mai!!
    Magari tu farai sicuramente altre prove e magari trovi anche una soluzione più elegante che modificare un file del core!!

    Intanto non posso fare altro che ringraziarti… mi hai fatto un bel regalo!! 😀

    P.S: Ti inserisco subito nel mio lettore feedrss!! 😀

  • Addirittura…Esagerato!
    Queste domande, sono sempre un motivo per aggiornarsi ed imparare qualcosa di nuovo!
    Magari ci faccio un post, mettendo un po’ in ordine i passi da fare per raggiungere l’obiettivo.
    Buon wordpress allora!!!!

  • surfweb

    Non sono esagerato. Non tutti sono disposti ad aiutare e a rispondere come hai fatto tu.

    WordPress lo considero più che una piattaforma blog perchè lo ritengo degno per realizzare siti web anche piuttosto complessi. A differenza di joomla, drupal e tanti altri è molto più semplice da configurare, ottimizzare ed adeguare alle proprie esigenze.

  • Ti ringrazio anche io per le soluzioni suggerite e mi accodo al giudizio di Surfweb relativamente a wordpress. Gestisco due siti: il blog su piattaforma wordpress e un sito su Joomla. Devo dire che WordPress da maggiori soddisfazioni.

  • Ciao Jester,
    grazie per il commento.
    Beh io sono un fan di WordPress, sicuramente ha i suoi limiti, ma si possono fare tantissime cose davvero avanzate!

  • Direi! Grazie a te! 😉

  • Alex

    Ciao Andrea, ho notato che da un po’ di versioni a sta parte di wordpress, se modifichi i permalink per farli finire ad esempio in .html (come fai tu in questo blog), toglie lo slash finale alla categoria… (come d’altronde succede al tuo blog)

    conosci per caso un rimedio affinchè non si verifichi questo?

  • Matteo

    Ciao Andrea,

    ho letto con molto interesse il tuo post, ma non sono ancora riuscito a capire una cosa.

    La struttura dei permalink attuale nel mio sito è:

    /%year%/%monthnum%/%day%/%postname%/

    e vorrei cambiarla in:

    /%category%/%postname%.html

    Mi sai dire cosa devo inserire nel file htaccess ?

    Mille grazie

  • Ciao Andrea,
    ho usato i tuoi consigli sul permalink: mi sono stati utili e ti ringrazio x le valide “dritte”!
    Un saluto,
    Carlo

  • io non ci sto capendo niente, sono proprio impedito…Dove trovo AMMINISTRAZIONE->opzioni?

  • DarioDN

    una curiosità. cosa dovrei scrivere se volessi rimuovere o sostituire “author” nel permalink di wordpress…
    solitamente infatti quando si va sulla pagina dell’autore di un post il permalink è http://www.dominio…/author/nome-autore . ecco, se io volessi far apparire “autore” al posto di “author”?
    credo si possa agire tramite htaccess no?
    grazie

  • reav

    secondo voi queste cose possono influire sull’indicizzazione su google ?
    io ho provato di tutto ma proprio nn va
    [omissis]

  • Ho attivato il modrewrite credo nel modo corretto, ma purtroppo nelle pagine interne del mio blog il logo che ho messo al posto del title, nell’header, non viene visualizzato.
    Nella homepage, index.php, invece si, viene visualizzato normalmente.

    A che cosa potrebbe essere dovuto secondo voi?
    Vi ringrazio in anticipo.

  • luigi

    Salve io uso WP 3.0.1 ho un problema con i permalink se vado a settare con una Struttura personalizzata %category%/%postname% , non mi si visualizzano le pagine mi da un errore:

    Not Found
    The requested URL /storia was not found on this server.
    CWnet Server at http://www.#####.it Port 80

    volevo settare i permalink, perchè a me non piace vedere l’url con estensione ?page_id=N .
    Il problema e che con le alre possibilità quindi:
    Predefinito, Data e nome,Mese e nome e Numerico va tutto ok
    ma con una Struttura personalizzata no…..
    come posso fare?
    Grazie

  • Ciao Andrea, sono approdato al tuo blog ricercando struttura personalizzata /%postname% …
    il mio problema è il seguente:
    ho importato da remoto a locale il mio blog e fin qui tutto bene, funziona tutto tranne la struttura personalizzata /%postname% in locale, non vengono visualizzate le pagine dando un errore di tipo

    Oggetto non trovato!

    L’URL richiesto non esiste su questo server. Il link della pagina da cui sei arrivato potrebbe essere errato o non essere più valido. Per favore, informa dell’errore l’autore della pagina.
    Se pensi che questo sia un errore del server, per favore contatta il webmaster.
    Error 404

    ho provato anche a cambiare $this->page_structure = $this->root . ‘%pagename%.html’; ma niente da fare
    l’unico modo per visualizzare le pagine in locale è quello di settare i permalink in predefinito blog/?p=123

    la mia domanda è dove vengono scritte le pagine.html in wordpress?
    come posso fare per avere la stessa struttura di permalink sia in remoto che in locale?

    Grazie
    ciao

  • Complimenti davvero!
    i tuoi articoli sono delle vere e proprie guide da tenersi a portata di mano e questo in particolare mi è stato utilissimo.

    Grazie!

  • francescoemail

    Ciao, ma se su wp si volesse personalizzare un urls che adesso è del tipo :
    http://www.site.com/v000123 dove v000123 è un numero del data base al quel si riferisce il post , e volessi aggiungere il titolo del post
    esempio casa a brera
    http://www.site.com/v000123-casa-a-brera oppure http://www.site.com/v000123/casa-a-brera
    cosa devo impostare su wp ?
    adesso è su http://site.com/articolo d’esempio/

    grazie

  • Gianpy

    Ciao Andrea. Uso WordPress e tempo fa cambiai la struttura dei permalink da http://www.nomesito.com/%category%/%postname%.html a http://www.nomesito.com/%postname%/, ora google strumenti webmaster mi restituisce ogni giorno centinaia di link che sto riposizionando a mano con il redirect (sto già a quasi 300, il passaggio si fece quando il blog aveva circa 320 articoli). C’è un modo per “programmare” il redirect affinchè redirecti correttamente, e in automatico, tutti i link su google? Non voglio usare plugin perchè finora hanno fatto solo macelli (e credo anche di esser stato penalizzato). Grazie mille.

    • Ciao Giampy, hai provato con delle espressioni regolari nell’.htaccess per eliminare le categorie dall’URL?

  • Gianpy

    Ciao Andrea, grazie per la risposta. Ho usato questo htaccess e funziona:

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} .html$
    RewriteRule ^(.*).html$ $1 [R=301,L]
    RewriteRule ^index.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    RewriteRule ^category/(.+)$ http://www.nomesito.com/$1 [R=301,L]

    # END WordPress

    Solo che ho anche parecchie url in sottocategorie, quelle non le trasforma purtroppo. Per caso sapresti cosa aggiungere o modificare anche per le subcategory? Grazie mille

  • ciao andrea! bel post, ma non riesco a trovare tra le impostazioni come modificare i permalink.. forse perché uso wordpress sul web? dovrei scaricarlo in locale? grazie mille in anticipo!

  • Pingback: 8 cose da sapere se intendete aprire un sito con Wordpress | DigiTalking()