L’URL dovrebbe essere case sensitive?

ho notato che

HTTP://STACKOVERFLOW.COM/QUESTIONS/ASK 

e

 http://stackoverflow.com/questions/ask 

entrambi funzionano bene – in realtà il precedente viene convertito in lettere minuscole.

Penso che questo abbia un senso per l’utente.

Se guardo Google, questo URL funziona correttamente:

 http://www.google.com/intl/en/about/corporate/index.html 

ma questo con “ABOUT” non funziona:

 http://www.google.com/intl/en/ABOUT/corporate/index.html 

L’URL dovrebbe essere case sensitive?

Secondo ” HTML e URL ” di W3 dovrebbero:

Potrebbero esserci URL, o parti di URL, dove il caso non è importante, ma identificarli potrebbe non essere facile. Gli utenti dovrebbero sempre considerare che gli URL fanno distinzione tra maiuscole e minuscole.

Tutti gli ” insensibili ” sono in grassetto per la leggibilità.

I nomi di dominio sono case insensitive secondo RFC 4343 . Il resto dell’URL viene inviato al server tramite il metodo GET. Questo può essere case sensitive o no.

Prendi questa pagina per esempio, stackoverflow.com riceve GET string / questions / 7996919 / should-url-be-case-sensitive , inviando un documento HTML al tuo browser. Stackoverflow.com non fa distinzione tra maiuscole e minuscole perché produce lo stesso risultato per / QUEStions / 7996919 / Should-url-be-case-sensitive .

D’altra parte, Wikipedia è case sensitive tranne il primo carattere del titolo. Gli URL https://en.wikipedia.org/wiki/Case_sensitivity e https://en.wikipedia.org/wiki/case_sensitivity portano allo stesso articolo, ma https://en.wikipedia.org/wiki/CASE_SENSITIVITY restituisce 404.

Dipende dal sistema di hosting. I siti ospitati su Windows tendono a non distinguere maiuscole e minuscole poiché il file system sottostante non fa distinzione tra maiuscole e minuscole. I siti ospitati su sistemi di tipo Unix tendono a distinguere tra maiuscole e minuscole poiché i loro file system sottostanti sono generalmente case sensitive. La parte del nome host dell’URL è sempre case insensitive, è il resto del percorso che varia.

La parte relativa al nome di dominio di un URL non è sensibile al maiuscolo / minuscolo poiché DNS ignora il caso: http://en.example.org/ e HTTP://EN.EXAMPLE.ORG/ entrambi aprono la stessa pagina.

Il percorso è usato per specificare e forse trovare la risorsa richiesta. È sensibile al maiuscolo / minuscolo, sebbene possa essere considerato non sensibile al maiuscolo / minuscolo da alcuni server, in particolare quelli basati su Microsoft Windows.

Se il server fa distinzione tra maiuscole e minuscole e http://en.example.org/wiki/URL è corretto, quindi http://en.example.org/WIKI/URL o http://en.example.org/wiki/url visualizzerà una pagina di errore HTTP 404, a meno che questi URL non puntino a risorse valide.

Non sono un fan del bumping di vecchi articoli ma perché questa è stata una delle prime risposte a questo particolare problema ho sentito il bisogno di chiarire qualcosa.

Come la risposta di @Bhavin Shah afferma che la parte del dominio dell’URL non fa distinzione tra maiuscole e minuscole, quindi

 http://google.com 

e

 http://GOOGLE.COM 

e

 http://GoOgLe.CoM 

sono tutti uguali ma tutto ciò che segue la parte del nome di dominio è considerato case sensitive.

così…

 http://GOOGLE.COM/ABOUT 

e

 http://GOOGLE.COM/about 

sono diversi.

Nota: sto parlando “tecnicamente” e non “letteralmente” in molti casi, ma in realtà i server sono configurati per gestire questi elementi allo stesso modo, ma è ansible configurarli in modo che NON vengano gestiti allo stesso modo.

Server diversi gestiscono questo in modo diverso e in alcuni casi devono essere case sensitive. In molti casi i valori delle stringhe di query sono codificati (come ID sessione o dati codificati Base64 che vengono passati come valore di stringa di query) Questi elementi sono sensibili alla distinzione tra maiuscole e minuscole in base alla loro natura, pertanto il server deve distinguere tra maiuscole e minuscole.

Quindi, per rispondere alla domanda, “i server” dovrebbero essere case sensitive nel prendere questi dati, la risposta è “sì, sicuramente”.

Ovviamente non tutto deve essere case sensitive ma il server dovrebbe essere consapevole di cosa sia e come gestirli.


Il commento di @Hart Simha dice fondamentalmente la stessa cosa. L’ho perso prima di essere pubblicato, quindi voglio dare il merito del credito.

Guarda le specifiche qui: sezione 2.7.3 http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-25#page-19

Lo schema e l’host sono case-insensitive e normalmente forniti in minuscolo; tutti gli altri componenti vengono confrontati in modo sensibile al maiuscolo / minuscolo.

Gli URL dovrebbero essere insensibili alle maiuscole e alle minuscole, a meno che non vi sia una buona ragione per la quale non dovrebbero esserlo.

Questo non è obbligatorio (non fa parte di un RFC) ma rende la comunicazione e l’archiviazione degli URL molto più affidabili.

Se ho due pagine su un sito web:

 http://stackoverflow.com/ABOUT.html 

e

 http://stackoverflow.com/about.html 

Come dovrebbero differire? Forse uno è scritto ‘gridando stile’ (tappi) – ma dal punto di vista della IA, la distinzione non dovrebbe mai essere fatta da una modifica nel caso dell’URL.

Inoltre, è facile da implementare in Apache: basta usare CheckSpelling On da mod_Speling.

Vecchia domanda ma sono inciampato qui, quindi perché non provarci perché la domanda è cercare una prospettiva diversa e non una risposta definitiva.

w3c potrebbe avere le sue raccomandazioni – che mi piacciono molto – ma voglio ripensarci visto che la domanda è qui.

Perché w3c considera i nomi di dominio non sensibili alle maiuscole e alle minuscole?

Sto pensando che la logica è che la parte del dominio dell’URL sia scritta a mano da un utente. Tutto dopo essere stato ipertestuale verrà risolto dalla macchina (browser e server nella parte posteriore).

Le macchine sono in grado di gestire l’insensibilità del case meglio degli umani (non del tipo tecnico :)).

Ma la domanda è solo perché le macchine POSSONO gestire quello che dovrebbe essere fatto in quel modo?

Intendo quali sono i vantaggi di nominare e accedere a una risorsa che si hereIsTheResource hereistheresource ? hereIsTheResource vs hereistheresource ?

Il laterale è molto illeggibile rispetto a quello del cammello che è più leggibile. Leggibile per gli umani (incluso il tipo tecnico).

Quindi ecco i miei punti: –

Il percorso della risorsa cade in qualche punto nel mezzo della struttura di programmazione e talvolta è vicino a un utente finale dietro al browser.

Il tuo URL (escluso il nome del dominio) dovrebbe essere insensibile alle maiuscole / minuscole se ci si aspetta che gli utenti lo tocchino o lo digitino ecc. Dovresti sviluppare la tua applicazione per AVOID che gli utenti digitino il percorso il più ansible.

Il tuo URL (escluso il nome del dominio) dovrebbe essere case sensitive se i tuoi utenti non lo digiterebbero mai a mano.

Conclusione

Il percorso dovrebbe essere case sensitive. I miei punti stanno valutando i percorsi sensibili al maiuscolo / minuscolo.

I caratteri URL vengono convertiti in codice esadecimale (se hai mai notato spazi negli URL visualizzati come% 20, ecc.) E poiché maiuscole e minuscole hanno valori esadecimali diversi, è perfettamente logico che gli URL siano in assoluto distinti tra maiuscole e minuscole. Tuttavia, lo spirito della domanda sembra essere DOVREBBE essere lo standard e io dico di no, ma lo sono. È compito dello sviluppatore / fornitore di tener conto di ciò nel loro codice se vogliono che funzioni indipendentemente da un utente finale.

Penso che questo e molte delle risposte su ciò che le specifiche fanno o non dicono manca il punto della domanda. Dovrebbero essere case sensitive? Questa è una domanda carica davvero. Dal punto di vista dell’utente, la distinzione tra maiuscole e minuscole è un punto dolente, non tutti sanno che fa la differenza. La questione se gli URI dovrebbero o non dovrebbero essere dipende dal contesto della domanda. Per la flessibilità tecnica, sì, dovrebbero essere. Per l’usabilità, no, non dovrebbero essere.

Per i siti Web ospitati su un server Linux, l’URL è sensibile al maiuscolo / minuscolo. http://www.google.com/about e http://www.google.com/About verranno reindirizzati a posizioni diverse. Mentre si trova su un server Windows, l’URL non fa distinzione tra maiuscole e minuscole, come nel nominare una CARTELLA e verrà reindirizzato nella stessa posizione.

la domanda è: l’url deve essere case sensitive?

Non vedo alcun uso o buona pratica dietro gli URL sensibili al maiuscolo / minuscolo. È stupido, fa schifo e dovrebbe essere evitato in ogni momento.

Solo per confermare la mia opinione, quando qualcuno chiede quale URL, come potresti spiegare quali caratteri dell’URL sono maiuscoli o minuscoli? È un’assurdità e nessuno dovrebbe mai dirti altrimenti.

È ansible creare URL non sensibili al contenuto

 RewriteEngine on rewritemap lowercase int:tolower RewriteCond $1 [AZ] RewriteRule ^/(.*)$ /${lowercase:$1} [R=301,L] 

Rendere Google.com..GOOGLE.com ecc diretto a google.com