I percorsi URL devono fare distinzione tra maiuscole e minuscole?


11

Gli URL del mio sito Web attualmente non fanno distinzione tra maiuscole e minuscole. Ad esempio, entrambi i seguenti collegamenti mostrano la stessa pagina esatta:

  • http://example.com/about
  • http://example.com/About

Tuttavia, dando un'occhiata al sito Web wordpress.org, ho notato che gli URL fanno distinzione tra maiuscole e minuscole. Ad esempio, il secondo link di seguito è una pagina di errore 404:

  • http://wordpress.org/about
  • http://wordpress.org/About

Il mio pensiero è quello di rendere le maiuscole e minuscole degli URL del mio sito web. A parte l'ovvia questione di evitare contenuti duplicati, quali sono i pro e i contro di avere URL sensibili al maiuscolo / minuscolo?

Aggiornare

Google sembra applicare una politica URL sensibile al maiuscolo / minuscolo sui propri URL. Ad esempio, il secondo link di seguito è un 404:

  • http://google.com/doodles
  • http://google.com/Doodles

Aggiornamento 2

Grazie per le tue risposte Ho deciso di prendere il consiglio menzionato nella risposta accettata e implementare 301 reindirizzamenti ove necessario. Dal momento che sto lavorando con WordPress, la mia soluzione di codice è la seguente (nel caso qualcuno fosse interessato):

function force_lowercase_urls() {

    if ( is_admin() )
        return;

    if ( preg_match( '/[A-Z]/', $_SERVER['REQUEST_URI'] ) ) {

        wp_redirect( strtolower( $_SERVER['REQUEST_URI'] ), 301 );
        exit();
    }

}
add_action( 'init', 'force_lowercase_urls' );

1
But wouldn't that result in duplicate content? – henrywrightNon devi mai preoccuparti di collegamenti duplicati se il tuo sito utilizza correttamente i collegamenti canonici e puoi avere 1 pagina di accesso in milioni di modi e non essere mai influenzato da contenuti duplicati.
Simon Hayter

@bybe Se hai accesso a una pagina in milioni di modi, Googlebot non sarà in grado di eseguire la scansione del tuo sito. Avere accesso a una pagina in una manciata di modi non è probabile che faccia male.
Stephen Ostermiller

Risposte:


6

Per impostazione predefinita, due dei file system del sistema operativo più utilizzati per la pubblicazione di contenuti Web presentano impostazioni molto diverse per la distinzione tra maiuscole e minuscole degli URL. La distinzione tra maiuscole e minuscole degli URL è probabilmente una funzione di cui stai utilizzando:

  • Microsoft IIS in esecuzione su Windows - URL senza distinzione tra maiuscole e minuscole - mostra lo stesso contenuto indipendentemente dalla capitalizzazione.
  • Il server HTTPD Apache in esecuzione su Linux - URL con distinzione tra maiuscole e minuscole - genera un errore 404 non trovato per maiuscole non corrette.

Secondo me, nessuno dei due valori predefiniti è l'ideale:

  • Mostrare lo stesso contenuto indipendentemente dalle maiuscole rende più difficile la scansione del tuo sito web. I motori di ricerca considerano lo stesso contenuto su più URL come contenuto duplicato.
  • La visualizzazione di pagine di errore per l'uso di maiuscole / minuscole non è facile da usare. Gli utenti di solito non sono consapevoli delle maiuscole durante la digitazione.

La soluzione ideale sarebbe quella di mostrare la pagina solo quando l'URL è in maiuscolo correttamente. Per una capitalizzazione errata, l'utente deve essere reindirizzato 301 alla capitalizzazione preferita. Ci sono alcuni modi in cui questo può essere realizzato:


1
Sento che questo è un artefatto di DOS e Windows che si discosta dal precedente standard di maiuscole e minuscole che abbiamo negli ambienti Unix.
Sun

1
Se Apache fa distinzione tra maiuscole e minuscole per le richieste associate al filesystem dipende dal filesystem sottostante, non da Apache stesso. Se si esegue Apache su Windows, la richiesta /iNdEx.HtMlo /InDeX.hTmlentrambi torneranno /index.html(a condizione che si /index.htmltratti di un file fisico sul file system).
MrWhite,

1
In effetti, questo sembrerebbe essere lo stesso per IIS .
MrWhite,

1
Bene, IIS funziona sempre su Windows (AFAIK), quindi le richieste del filesystem non faranno mai distinzione tra maiuscole e minuscole. Tuttavia, molti siti indirizzano (riscrivono) gli URL attraverso una sorta di front controller - in questo caso la richiesta probabilmente non è mappata a un file fisico sul filesystem e quindi l'URL è sensibile alla distinzione tra maiuscole e minuscole (a meno che l'app non lo specifichi in modo specifico) -insensibile) - che è sostanzialmente lo stesso di Apache (quando si esegue su Windows). (?)
MrWhite,

2
In realtà sono inciampato qui mentre cercavo la domanda recente / occupata " Perché gli URL fanno distinzione tra maiuscole e minuscole? ". Sembra che frasi come "IIS non fanno distinzione tra maiuscole e minuscole" (menzionate più volte in quell'altro thread) sono così diffuse che la convinzione comune sembra essere che gli URL su IIS siano sempre senza distinzione tra maiuscole e minuscole - almeno questa è l'impressione che stavo ottenendo - che non sembra essere affatto il caso.
MrWhite,

4

Ecco la posizione di Google da una sessione di chat live archiviata (il link è ora morto):

* L'incoerenza delle maiuscole negli URL causa problemi di contenuto duplicati e diluisce il ranking delle pagine? Ad esempio www.site.com/abc vs www.site.com/Abc. Sugli host Windows, si tratta della stessa pagina, ma sono pagine diverse sugli host Unix.

JohnMu: Ciao John, in base agli standard esistenti, gli URL fanno distinzione tra maiuscole e minuscole, quindi sì, questi sarebbero visti come URL separati. Poiché il contenuto degli URL è lo stesso, generalmente lo riconosceremo e ne terremo uno solo. Tuttavia, ti consigliamo di provare a mantenere tutti i collegamenti su una versione dell'URL. Tieni presente che ciò vale anche per i file robots.txt. *

Il team di IE consiglia di scegliere una convenzione di casing dei file e di aderirvi rigorosamente in quanto può migliorare le prestazioni.


-2

RFC 3986 6.2.2.1 definisce gli URI come maiuscole e minuscole, quindi non è una buona idea renderli sensibili al maiuscolo / minuscolo come fa wordpress.org.


Ma ciò non comporterebbe contenuti duplicati?

In realtà no, perché i motori di ricerca dovrebbero funzionare anche senza distinzione tra maiuscole e minuscole.

Suppongo che la domanda ora sia come scoprire se i motori di ricerca visualizzano gli URL maiuscoli e minuscoli come equivalenti? Prendi Google ad esempio: prova google.com/Doodles e google.com/doodles

10
Tale RFC risolve solo il caso di tre parti dell'URL. 1 - Il protocollo ( http://) - senza distinzione tra maiuscole e minuscole, normalizza in minuscolo. 2 - Il nome host ( example.com) - senza distinzione tra maiuscole e minuscole, normalizza in minuscolo. 3. Caratteri codificati in percentuale ( %3F) - senza distinzione tra maiuscole e minuscole, normalizzare in maiuscolo. Il resto dell'URL è generalmente sensibile al maiuscolo / minuscolo
Stephen Ostermiller
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.