Il modo giusto di utilizzare index.html


9

Ho molti problemi su cui vorrei sentire la tua opinione, quindi spero che riuscirò a spiegarlo abbastanza bene. Dovrei anche notare che sono principiante dotato solo della conoscenza di HTML e CSS, quindi anche se sono quasi sicuro che ci sia una soluzione semplice che utilizza un potente PHP, non mi aiuterà .

Diciamo che ho il mio blog personale sull'indirizzo example.com/blog.htmle ci sono collegamenti a diversi sotto-blog example.com/blog/math.html, example.com/blog/coding.htmlecc. Quindi la mia cartella principale contiene blog.htmle blogcartella, la blogcartella stessa contiene file math.htmle coding.html.

Prima di tutto, ho imparato (da Google Webmasters Tools ) che per scopi estetici e SEO è bene unificare example.com.come example.com/index.htmlaggiungendo l' _rel="canonical"_attributo alla fonte di index.html. Usando un paio di altri trucchi (come il collegamento a ../e ./) mi sono liberato della brutta index.htmlapparizione nei miei indirizzi web.

E ora mi chiedo se questo trucco può essere utilizzato non solo per la cartella principale ma per qualsiasi cartella? Voglio dire, vorrei spostare il mio blog.htmlnella blogcartella, rinominarlo in index.htmle aggiungere rel="canonical"per unificare example.com/blog/index.htmlcon example.com/blog/.
Questo trucco cambierebbe l'indirizzo del mio blog da example.com/blog.htmlin example.com/blog/.

Non finito! Riscontro anche problemi con il robot google che indicizza le mie cartelle. Quindi quando digito site:example.com/nella ricerca di Google, example.com/blog/tra gli altri risultati appare il collegamento alla mia cartella con file non elaborati, icone, ecc. Immagino che ci siano anche altri modi per risolverlo, ma IMHO la modifica sopra menzionata farebbe anche il trucco: index.html nella cartella del blog manterrebbe l'utente dalla visualizzazione del contenuto grezzo effettivo di quella cartella, sembrerebbe solo il link giusto example.com/blog/nella ricerca di Google e (spero che) _rel="canonical"_renderebbe il secondo link indesiderato example.com/blog/index.htmlnon comparire nei risultati di ricerca.

Quindi le mie domande sono:

  1. È buona norma avere il index.htmlfile in ogni sottocartella o deve essere solo nella cartella principale?
  2. Ci sono svantaggi o problemi che possono verificarsi quando si utilizza il secondo metodo " indice in ogni cartella "?
  3. Quale uno dei due modi di strutturare il sito sopra descritto sarebbe si preferisce?

Per la mia precisazione, i motori di ricerca vedono site.com/blog e site.com/blog/index.html come 2 file distinti? Se si utilizzano collegamenti con entrambi gli URL, esiste la possibilità che si divida l'autorizzazione di collegamento / pagina tra 2 posizioni?

Per quanto ne so, i motori di ricerca (almeno Google) li vedono come due file distinti. Perché in realtà possono essere distinti - i due collegamenti possono differire solo in una singola barra. (Leggi di più qui .) E sì, se stai usando due diversi collegamenti a una pagina, l'intero rango della pagina viene diviso tra quei due collegamenti e la tua pagina sta effettivamente perdendo la metà del suo rango. Ecco perché suggerisco la canonicalizzazione del link menzionato per prevenire tali perdite.
Jeyekomon,

Risposte:


13

Il motivo per cui lo utilizziamo index.htmlo i home.htmlrelativi derivati ​​è perché lo stesso software server web lo cerca e lo serve. Per esempio:

Questo è NON VALIDO: (directory www)

/var/www/
|_blog.html
|_blog/
  |_math.html
  |_page2.html
  |_page3.html
  |_(...)

Questo infatti verrà servito come una pagina che elenca le cartelle e i file. (Non quello che vuoi). Puoi provare questa struttura, ma crea anche un file index.html accanto a blog.html. Nota come non servirà blog.html a meno che tu non specifichi http://www.site.com/blog.html) Ecco perché http://www.google.com/mostra la pagina senza che tu debba specificarlahttp://www.google.com/index.html

Questo è valido:

/var/www/
|_index.html (renamed blog.html to index.html)
|_blog/
  |_math.html
  |_page2.html
  |_page3.html
  |_(...)

Questo servirà il tuo blog.htmlfile COME THE HOMEPAGE. (Non elencare tutte le cartelle / i file in quella directory)

Il software del server web ha (nella configurazione) un elenco specializzato di nomi di file che saranno serviti come homepage o pagina principale di una cartella. (Nella mia esperienza, index.htmlha la precedenza su index.php, quindi se hai index.htmle index.phpin una cartella, index.html è ciò che il pubblico vedrà) Naturalmente tutto ciò può essere cambiato e puoi anche impostare blog.htmlper essere riconosciuto come un "indice".

Rispondere al tuo commento:

"Questo trucco cambierebbe l'indirizzo del mio blog da www.xxx.com/blog.html a www.xxx.com/blog/."

Ciò avverrebbe spostandosi blog.htmlcompletamente in /blog/e rinominandolo in index.html.

La tua nuova struttura sarebbe:

/var/www/
|_blog/
  |_index.html (renamed from blog.html)
  |_math.html
  |_page2.html
  |_page3.html
  |_(...)

Questo dovrebbe servire correttamente http://www.site.com/blog/per mostrare i contenuti del tuo blog.html a cui abbiamo rinominato in index.htmlmodo che il software possa impostarlo come indice della tua directory/blog/

Ora sei anche libero di mettere e index.htmlarchiviare nella radice del tuo sito http://www.site.com/(index.html)per avere collegamenti /blog/e quant'altro desideri.

Rispondere specificamente alle tue domande in brevi dichiarazioni:

  1. È buona norma avere il file index.html in ogni sottocartella o deve essere solo nella cartella principale?

    Sì, perché impedisce alle persone di vedere quali file sono nelle tue directory. Puoi evitarlo con un .htaccessfile contenenteOptions -Indexes

  2. Ci sono svantaggi o problemi che possono verificarsi quando si utilizza il secondo metodo "indice in ogni cartella"?

    Nessuno a cui riesco a pensare.

  3. Quale dei due modi di strutturare il sito Web sopra descritto preferiresti?

    Di solito ho un file index.htmlo index.phpnella radice, sottocartelle in base alla categoria (come forumo newso loginecc.) E quindi una sorta di indice all'interno di ciascuno di essi.


Grazie per una risposta così completa! Il fatto che l'accesso pubblico alle mie cartelle e il fatto che siano indicizzati da Google, mi fanno arrabbiare così ora che quando so che non c'è nessun problema con il trucco "indice in ogni cartella", cambierò il mio sito web in questo modo. Spero solo che il trucco rel = "canonico" funzioni e che tutti quegli indici non compaiano nella ricerca di google ...: D
Jeyekomon,

6

Il termine tecnico per index.html è l'indice di directory per Apache e il documento predefinito per IIS. L'altra direttiva di interesse di Apache è la direttiva Opzioni . Come indicato nella documentazione, quando Options Indexesè impostato:

Se viene richiesto un URL che associa a una directory e non vi è DirectoryIndex (ad esempio, index.html) in quella directory, mod_autoindex restituirà un elenco formattato della directory.

Quando installo un sito Web che non utilizza un sistema di gestione dei contenuti, la mia configurazione preferita è avere una pagina di contenuti per directory. Quella pagina è l'indice della directory (documento predefinito) per la directory. Tutti i collegamenti sul sito si collegano solo alla directory e terminano con una barra finale (ad esempio, http://example.com/blog/anziché http://example.com/blog/index.htmlo ./blog/invece di ./blog/index.html). La barra finale è importante per evitare quello che viene comunemente chiamato reindirizzamento di cortesia . (Se la barra finale viene omessa, tutto si risolve comunque correttamente, ma aumenta il numero di richieste HTTP e quindi la larghezza di banda.)

La mia motivazione principale per la metodologia di cui sopra è duplice. Innanzitutto, facilita il passaggio alla tecnologia utilizzata sul sito Web. Ad esempio, posso cambiare una pagina da index.html a index.php senza interrompere alcun collegamento o elenco dei motori di ricerca. In secondo luogo, l'estensione del file di una pagina di contenuto è "rumore"; rimuovendo l'estensione del file dall'URL si ottengono URL più brevi e, si spera, più leggibili.

Come per altri tipi di file:

  • Tutti i file CSS risiedono in una directory CSS nella radice del sito Web.
  • Tutti i file di immagine risiedono in una directory di immagini o in una sua sottodirectory nella radice del sito Web.
  • Tutti i file JavaScript si trovano in una directory di script nella radice del sito Web.
  • Tutti i file flash e altri filmati si trovano in una directory video o in una sottodirectory nella directory principale del sito Web.

Su un server Apache, disabilito Options Indexesper le suddette directory. Sui server Apache e IIS, non specifico un indice di directory (documento predefinito) per le suddette directory. Pertanto, una richiesta per una qualsiasi delle directory genera un errore HTTP 403.


A causa della limitazione del limite di due collegamenti, non ho potuto includere collegamenti a Indice directory e Documento predefinito nella mia risposta, quindi eccoli qui.
Ryan Prechel,
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.