Non è davvero una questione di estetica, ma davvero una differenza tecnica. La directory che ci pensa è totalmente corretta e praticamente spiega tutto. Risolviamolo:
Ora sei di nuovo nell'età della pietra o servi solo pagine statiche
Hai una struttura di directory fissa sul tuo server web e solo file statici come immagini, html e così via - nessuno script lato server o altro.
Un browser richiede /index.htm
, esiste e viene consegnato al client. Più tardi avrai molti - diciamo - film in DVD recensiti e una pagina html per ognuno di essi nella /dvd/
directory. Ora qualcuno richiede /dvd/adams_apples.htm
ed è consegnato perché è lì.
Un giorno qualcuno chiede solo /dvd/
- che è una directory e il server sta cercando di capire cosa consegnare. Oltre alle restrizioni di accesso e così via ci sono due possibilità: Mostra all'utente il contenuto della directory (scommetto che l'hai già visto da qualche parte) o mostra un file predefinito (in Apache è:DirectoryIndex: sets the file that Apache will serve if a directory is requested.
)
Fin qui tutto bene, questo è il caso previsto.Mostra già la differenza nella gestione, quindi entriamo in esso:
Alle 5:34 hai sbagliato a caricare i tuoi file
(Il che è del tutto comprensibile.) Quindi, hai fatto qualcosa di completamente sbagliato e invece di caricare /dvd/the_big_lebowski.htm
hai caricato quel file come dvd
(senza estensione) in/
.
Qualcuno ha aggiunto un segnalibro alla tua /dvd/
directory (ovviamente non volevi crearla e aggiornarla sempre index.htm
) e sta visitando il tuo sito web. Il contenuto della directory viene consegnato - tutto bene.
Qualcuno ha sentito della tua lista e sta scrivendo /dvd
. E ora è fregato. Invece della tua directory di DVD che elenca, il server trova un file con quel nome e consegna il tuo file Big Lebowski.
Quindi, elimini quel file e dici al ragazzo di ricaricare la pagina. Il tuo server cerca il /dvd
file, ma non c'è più. La maggior parte dei server noterà quindi che esiste una directory con quel nome e dirà al client che ciò che stava cercando è effettivamente da qualche altra parte. Molto probabilmente la risposta sarà:
Status Code:301 Moved Permanently
con Location: http://[...]/dvd/
Quindi, ignorando totalmente ciò che tu pensi delle directory o dei file, il server può solo gestire tali cose e - se non diversamente indicato - decide per te sul significato di "barra o meno".
Alla fine, dopo aver ricevuto questa risposta, il client si carica /dvd/
e tutto va bene.
Va bene? No.
"Va bene" non è abbastanza buono per te
Hai qualche pagina dinamica in cui tutto viene passato /index.php
e viene elaborato. Fino ad ora tutto ha funzionato abbastanza bene, ma l'intera cosa inizia a sentirsi più lenta e indaghi.
Presto noterai che /dvd/list
sta facendo esattamente la stessa cosa: il reindirizzamento in /dvd/list/
cui viene poi tradotto internamente index.php?controller=dvd&action=list
. Un'ulteriore richiesta - ma anche peggio! customer/login
reindirizza a customer/login/
cui a sua volta reindirizza all'URL HTTPS di customer/login/
. Si finisce per avere tonnellate di reindirizzamenti HTTP non necessari (= richieste aggiuntive) che rallentano l'esperienza dell'utente.
Molto probabilmente anche qui hai un indice di directory predefinito: index.php?controller=dvd
senza action
semplicemente caricamenti interni index.php?controller=dvd&action=list
.
Sommario:
Se finisce con /
esso non può mai essere un file. Nessun server indovinando.
Barra o nessuna barra sono significati completamente diversi. Esiste una differenza tecnico / di risorse tra "barra o nessuna barra" e dovresti esserne consapevole e utilizzarla di conseguenza. Solo perché il server molto probabilmente carica /dvd/index.htm
- o carica la roba corretta dello script - quando dici /dvd
: lo fa, ma non perché hai fatto la richiesta giusta. Quale sarebbe stato /dvd/
.
Se si omette la barra anche se si intende effettivamente la versione con barra, si ottiene una penalità aggiuntiva per la richiesta HTTP. Il che è sempre negativo (pensa alla latenza mobile) e ha più peso di un "URL carino", soprattutto perché i crawler non sono così stupidi come credono o vogliono farti credere dai SEO;)