Tengo muchas cuestiones sobre las que me gustaría escuchar su opinión, así que espero poder explicarlo lo suficientemente bien. También debo tener en cuenta que estoy equipado para principiantes solo con el conocimiento de HTML y CSS, así que aunque estoy casi seguro de que hay una solución simple que usa PHP potente, no me ayudará .
Digamos que tengo mi blog personal en la dirección example.com/blog.html
y hay enlaces a varios sub-blogs example.com/blog/math.html
, example.com/blog/coding.html
etc. Así que mi carpeta raíz contiene blog.html
y blog
carpeta, la blog
carpeta en sí contiene archivos math.html
y coding.html
.
En primer lugar, aprendí (de Google Webmasters Tools ) que para fines estéticos y de SEO es bueno unificar example.com.com
y example.com/index.html
agregar _rel="canonical"_
atributos a la fuente del index.html
. Usando un par de otros trucos (como vincular ../
y ./
) me libré de lo feo que index.html
aparece en mis direcciones web.
Y ahora me pregunto si este truco se puede usar no solo para la carpeta raíz sino para cualquier carpeta. Quiero decir, me movería blog.html
a la blog
carpeta, cambiaría el nombre index.html
y agregaría rel="canonical"
para unificar example.com/blog/index.html
con example.com/blog/
.
Este truco cambiaría la dirección de mi blog de example.com/blog.html
a example.com/blog/
.
¡Sin terminar! También tengo problemas con el robot de Google que indexa mis carpetas. Entonces, cuando escribo site:example.com/
en la búsqueda de Google, el enlace a mi carpeta example.com/blog/
con archivos sin formato, iconos, etc. aparece entre los otros resultados. Supongo que también hay otras formas de solucionarlo, pero en mi humilde opinión, el cambio mencionado anteriormente también funcionaría: el index.html en la carpeta del blog evitaría que el usuario vea el contenido real de esa carpeta, solo aparecería el enlace correcto example.com/blog/
en la búsqueda de google y (espero que) _rel="canonical"_
haga que el segundo enlace example.com/blog/index.html
no deseado no aparezca en los resultados de búsqueda.
Entonces mis preguntas son:
- ¿Es una buena práctica tener el
index.html
archivo en cada subcarpeta o está destinado a estar solo en la carpeta raíz? - ¿Existen desventajas o problemas que pueden ocurrir al usar el segundo método de " índice en cada carpeta "?
- ¿Cuál de las dos formas de estructurar el sitio web arriba indicadas se le prefiere?
fuente
Respuestas:
La razón por la que usamos
index.html
ohome.html
o productos derivados de los mismos, se debe a que el software de servidor web en sí en realidad se ve por ello y lo sirve. Por ejemplo:Esto NO ES VÁLIDO: (directorio www)
De hecho, esto se servirá como una página que enumera las carpetas y archivos. (No es lo que quieres). Puede probar esta estructura, pero también hacer un archivo index.html junto a blog.html. Observe cómo no servirá blog.html a menos que especifique
http://www.site.com/blog.html
) Es por eso quehttp://www.google.com/
muestra la página sin que tenga que especificarhttp://www.google.com/index.html
Esto es VÁLIDO:
Esto servirá su
blog.html
archivo COMO LA PÁGINA PRINCIPAL. (No enumere todas las carpetas / archivos en ese directorio)El software del servidor web tiene (en la configuración) una lista especializada de nombres de archivos que se servirán como la página de inicio o la página principal de una carpeta. (En mi experiencia,
index.html
tiene prioridad sobre index.php, por lo que si tieneindex.html
yindex.php
en una carpeta, index.html es lo que verá el público) Por supuesto, todo eso puede cambiarse e incluso puede configurarseblog.html
para ser reconocido como un "índice".Dirigiendo su comentario:
Esto se haría moviéndolo
blog.html
completamente/blog/
y renombrándolo a index.html.Su nueva estructura sería:
Esto debería servir correctamente
http://www.site.com/blog/
para mostrar el contenido de su blog.html al que le cambiamos el nombre paraindex.html
que el software pueda configurarlo como el índice de su directorio/blog/
Ahora también es libre de colocar y
index.html
archivar en la raíz de su sitiohttp://www.site.com/(index.html)
para tener enlaces/blog/
y cualquier otra cosa que desee.Responde específicamente sus preguntas en declaraciones cortas:
¿Es una buena práctica tener el archivo index.html en cada subcarpeta o está destinado a estar solo en la carpeta raíz?
Sí, porque evita que las personas vean qué archivos hay en sus directorios. Puede evitar esto con un
.htaccess
archivo que contengaOptions -Indexes
¿Existen desventajas o problemas que pueden ocurrir al usar el segundo método de "índice en cada carpeta"?
Ninguno que se me ocurra.
¿Cuál de las dos formas de estructurar el sitio web descrito anteriormente preferiría?
Por lo general, tengo un archivo
index.html
oindex.php
en la raíz, subcarpetas basadas en la categoría (comoforum
onews
ologin
etc.) y luego algún tipo de índice dentro de cada uno de ellos.fuente
El término técnico para index.html es Índice de directorio para Apache y Documento predeterminado para IIS. La otra directiva de Apache de interés es la directiva Opciones . Como se indica en la documentación, cuando
Options Indexes
se establece:Cuando configuro un sitio web que no utiliza un sistema de administración de contenido, mi configuración preferida es tener una página de contenido por directorio. Esa página es el índice del directorio (documento predeterminado) para el directorio. Todos los enlaces en el sitio solo enlazan al directorio y terminan con una barra inclinada (por ejemplo, en
http://example.com/blog/
lugar dehttp://example.com/blog/index.html
o en./blog/
lugar de./blog/index.html
). La barra diagonal final es importante para evitar lo que comúnmente se conoce como redireccionamiento de cortesía . (Si se omite la barra diagonal final, todo aún se resuelve correctamente, pero el número de solicitudes HTTP y, por lo tanto, el ancho de banda aumentan).Mi motivación principal para la metodología anterior es doble. Primero, facilita el cambio de la tecnología utilizada en el sitio web. Por ejemplo, puedo cambiar una página de index.html a index.php sin romper ningún enlace o listado de motores de búsqueda. Segundo, la extensión del archivo de una página de contenido es "ruido"; eliminar la extensión del archivo de la URL da como resultado URL más cortas y, con suerte, más legibles.
En cuanto a otros tipos de archivos:
En un servidor Apache, desactivo
Options Indexes
para los directorios mencionados anteriormente. En los servidores Apache e IIS, no especifico un índice de directorio (documento predeterminado) para los directorios mencionados anteriormente. Por lo tanto, una solicitud para cualquiera de los directorios da como resultado un error HTTP 403.fuente