Rendi i tuoi URL SEO-friendly

In questo articolo, vedremo come utilizzare le regole di riscrittura per risolvere un problema SEO comune, gli URL SEO-friendly.

Una delle funzioni utili del file .htaccess è la possibilità di modificare gli URL.

Puoi usarlo per reindirizzare un URL a un altro o utilizzarlo per apportare un’ampia modifica radicale a tutti gli URL sul tuo sito web.

Un aspetto di questa funzionalità è stato dimostrato nell’ultima sezione.

In questo articolo, vedremo come utilizzare le regole di riscrittura per risolvere un problema SEO comune.

Il problema che risolveremo saranno gli URL non SEO-friendly.

Gli URL SEO-friendly sono leggibili dall’utente e dalla macchina con una gerarchia logica.

Comprensione degli URL SEO-friendly.

Gli URL SEO-friendly sono fondamentalmente URL che utilizzano parole pertinenti, comuni e parole semanticamente significative nel dominio, nel percorso e nella pagina. Cosa significa? Significa che le persone che guardano l’URL dovrebbero essere in grado di leggerlo e capire cosa dovrebbe essere nella pagina che serve.

Esempio: SEO-Friendly URL

Questo URL NON E’ SEO-friendly.

https://cdn03.example.com/8cb42/index.php?35872=8zh3n9vadbxgac9c&id=851368#top

Questo URL E’ SEO-friendly.

https://example.com/blog/introduction-to-seo-friendly-urls

Se questo sembra complicato, puoi seguire diverse regole di base che ti aiuteranno. Tali regole sono le seguenti:

  • Usa un singolo dominio.
  • Utilizzare un sottodominio solo se è assolutamente necessario.
  • Usa parole semplici per la cartella / percorsi e nomi di pagina.
  • Usa parole chiave nell’URL. Sì, solo usare le parole non è lo stesso che usare parole descrittive e pertinenti.
  • Gli URL più brevi sono migliori.
  • Mantieni gli URL simili ai titoli delle pagine.
  • Tieni i caratteri speciali fuori dall’URL il più possibile.
  • Evita di avere troppe cartelle.
  • Prova a rispettare tutti gli URL minuscoli.
  • Separare le parole con trattini.

Se segui queste regole, i tuoi URL saranno molto più leggibili.

SEO-friendly URL via .htaccess.

Ora, che abbiamo visto quali sono gli URL SEO-friendly, possiamo vedere come utilizzare il file .htaccess.

Rimozione delle estensioni di file

Uno dei problemi con molti siti Web sono le estensioni dei file che ingombrano l’URL. Questo non è necessariamente negativo dal punto di vista tecnico SEO. Tuttavia, rimuoverli può ripulire gli URL e migliorare l’esperienza dell’utente.

Il seguente codice cambierà example.com/cool-page.html to example.com/cool-page.

.htaccess

Redirects example.com/cool-page.html to example.com/cool-page

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}\.html -f

RewriteCond %{REQUEST_URI} ^(.+)\.html$

RewriteRule (.*)\.html$ /$1 [R=301,L]

Puoi fare la stessa cosa con example.com/cool-page.php modificando ogni istanza di .html in .php nello snippet precedente.

Reindirizza index.php alla root

È comune avere un file index.php come parte della maggior parte dei CMS basati su PHP. Non è una pratica consigliata ed è dannoso per l’esperienza dell’utente. Questo è un piccolo fix che consigliamo.

Reindirizza il file index.php al dominio principale

RewriteRule ^index.php$ https://www.example.com/ [R=301,L]

Questo può causare un ciclo di reindirizzamento senza fine.

Se ciò accade sul tuo server, dovresti provare questo metodo:

RewriteCond %{THE_REQUEST} ^[A-Z][3,9]\/([^/]+/)*index\.php\ HTTP/

RewriteRule ^(([^/]+/)*)index.php$ https://www.example.com/$1 [R=301,L]

Rendere gli URL in minuscolo

Note:

Alcuni server Linux non gestiscono molto bene i caratteri maiuscoli negli URL. Il server restituisce spesso un’intestazione di risposta 502 Gateway non valido. Nella mia esperienza, questo è più comune con percorsi URL non fisici. In altre parole, se example.com/images/ non fa parte del file system fisico sul server Web, è più probabile che restituisca un codice di errore.

John Mueller ci dice che a Google non importa quale caso usi. Tuttavia, gli URL fanno distinzione tra maiuscole e minuscole. Ciò significa che example.com/images/ non è uguale a example.com/IMAGES/. Ciò può causare un problema di contenuto duplicato.

Personalmente raccomando di utilizzare lettere minuscole per tutto sul tuo server web e sito web. Ciò consente la correzione più semplice di questo problema.

Nota: nella maggior parte dei casi, un tag canonico è sufficiente per correggere questo problema. Tuttavia, ciò non influisce sulle immagini e su altri documenti non HTML.

Per risolvere questo problema, dobbiamo prima determinare se ci sono lettere maiuscole. In tal caso, reindirizzeremo allo stesso URL con tutti i caratteri minuscoli.

Per motivi di spazio, non discuterò di ogni elemento di questa regola. Tuttavia, tieni presente che stiamo memorizzando la variabile HASCAPS tramite il flag della variabile di ambiente [E]. Questo ci consente di verificarlo più avanti nella nostra regola di riscrittura.

Se ci sono limiti, imposta HASCAPS su true e salta la regola successiva

## If there are caps, set HASCAPS to true and skip next rule

RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1]

## Skip this entire section if no uppercase letters in requested URL

RewriteRule ![A-Z] - [S=28]

## Replace single occurrence of CAP with cap, then process next Rule.

RewriteRule ^([^A]*)A(.*)$ $1a$2 [DPI]

RewriteRule ^([^B]*)B(.*)$ $1b$2 [DPI]

RewriteRule ^([^C]*)C(.*)$ $1c$2 [DPI]

RewriteRule ^([^D]*)D(.*)$ $1d$2 [DPI]

RewriteRule ^([^E]*)E(.*)$ $1e$2 [DPI]

RewriteRule ^([^F]*)F(.*)$ $1f$2 [DPI]

RewriteRule ^([^G]*)G(.*)$ $1g$2 [DPI]

RewriteRule ^([^H]*)H(.*)$ $1h$2 [DPI]

RewriteRule ^([^I]*)I(.*)$ $1i$2 [DPI]

RewriteRule ^([^J]*)J(.*)$ $1j$2 [DPI]

RewriteRule ^([^K]*)K(.*)$ $1k$2 [DPI]

RewriteRule ^([^L]*)L(.*)$ $1l$2 [DPI]

RewriteRule ^([^M]*)M(.*)$ $1m$2 [DPI]

RewriteRule ^([^N]*)N(.*)$ $1n$2 [DPI]

RewriteRule ^([^O]*)O(.*)$ $1o$2 [DPI]

RewriteRule ^([^P]*)P(.*)$ $1p$2 [DPI]

RewriteRule ^([^Q]*)Q(.*)$ $1q$2 [DPI]

RewriteRule ^([^R]*)R(.*)$ $1r$2 [DPI]

RewriteRule ^([^S]*)S(.*)$ $1s$2 [DPI]

RewriteRule ^([^T]*)T(.*)$ $1t$2 [DPI]

RewriteRule ^([^U]*)U(.*)$ $1u$2 [DPI]

RewriteRule ^([^V]*)V(.*)$ $1v$2 [DPI]

RewriteRule ^([^W]*)W(.*)$ $1w$2 [DPI]

RewriteRule ^([^X]*)X(.*)$ $1x$2 [DPI]

RewriteRule ^([^Y]*)Y(.*)$ $1y$2 [DPI]

RewriteRule ^([^Z]*)Z(.*)$ $1z$2 [DPI]

## If there are any uppercase letters, restart at very first RewriteRule in file.

RewriteRule [A-Z] - [N]

RewriteCond %{ENV:HASCAPS} TRUE

RewriteRule ^/?(.*) /$1 [R=301,L]

Ho notato che il flag [DPI] non è sempre necessario. Tuttavia, se non è incluso in alcune configurazioni del server, può restituire un errore 502.

Esistono altri modi per forzare gli URL minuscoli. Puoi usare mod_speling.

Tuttavia, questo modulo dovrebbe essere impostato per correggere il caso URL solo se WebDAV è stato abilitato su una qualsiasi delle sue sottodirectory.

Puoi leggere di più su mod_speling nella documentazione di Apache. (Sì … questo è mod_speling non mod_spelling.)

Se hai accesso al file httpd.conf o il tuo provider host farà delle modifiche per te, c’è un altro modo per forzare gli URL minuscoli con .htaccess.

In questo metodo, trarremo vantaggio da una direttiva mod_rewrite che sembra essere sconosciuta o trascurata da molti sviluppatori web. La direttiva che useremo è una RewriteMap. Una RewriteMap consente stringhe di sostituzione predefinite che possono essere utilizzate in una RewriteRule.

Questo è uno strumento prezioso. Il problema per la maggior parte dei webmaster è che la direttiva RewriteMap non può essere utilizzata nelle sezioni <Directory> o nei file .htaccess.

Inoltre, è possibile impostarlo nel contesto del server tramite il file httpd.conf.

Per forzare gli URL minuscoli con RewriteMap imposteremo la seguente direttiva nel file httpd.conf.

httpd.conf

RewriteMap lc int:tolower

Successivamente, imposteremo una RewriteRule nel nostro file .htaccess.

.htaccess

RewriteRule "(.*)" "${lc:$1}" [R]

Così va molto meglio!

Nota che lc è il nome della mappa ed è arbitrario.

Tuttavia, è fondamentale che il nome della mappa corrisponda sia alle direttive RewriteMap che a RewriteRule.

L’int: nella direttiva RewriteMap definisce un’origine mappa interna.

Tolower è una funzione interna predefinita fornita con Apache.

Converte la chiave in caratteri minuscoli.

Attenzione:

Alcuni strumenti di immagine salvano le immagini con estensioni di file maiuscole per impostazione predefinita, ad es. .PNG non .png.

Ciò può causare il mancato funzionamento di queste immagini in alcuni casi.

Assicurati che le estensioni dei file di immagini siano minuscole prima di forzare URL minuscoli su un sito Web esistente.

.htaccess

Rewrites /blog.php?id=243 as /epic-blog-post

RewriteRule ^epic-blog-post$ blog.php?id=epic-blog-post [L]

RewriteCond %{THE_REQUEST} ^[A-Z][3,9] /blog.php?id=243 HTTP/

RewriteRule ^blog.php$ https://www.example.com/epic-blog-post? [R=301,L]

Ora questo sarà il risultato esempio.com/epic-blog-post. Molto meglio.

.htaccess non è un file fix-it

Se i tuoi URL sono tutt’altro che SEO-friendly, cercare di risolverli con il file .htaccess non è saggio. Sarebbe difficile creare regole di reindirizzamento che riscrivono logicamente gli URL con un solo reindirizzamento. Stai meglio usando il tuo linguaggio lato server come PHP o Python per creare URL SEO-friendly in primo luogo.

Ci sono momenti in cui dovrai combinare il tuo linguaggio di codifica con .htaccess per ottenere il risultato desiderato. Tuttavia, non utilizzare il file .htaccess come catch-all per problemi di URL.

## Redirects example.com/cool-page.html to example.com/cool-page RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.html -f RewriteCond %{REQUEST_URI} ^(.+)\.html$ RewriteRule (.*)\.html$ /$1 [R=301,L]

Articoli Recenti

Guide

Inbox Zero

Inbox Zero: una strategia unica per la gestione delle tue mailSappiamo tutti come va. Apriamo la nostra casella di posta…