¿Cómo algunos sitios web no tienen extensiones de archivo en la URL?

Para entender cómo un sitio web maneja una URL como http://www.example.com/about, el lugar más interesante para comenzar son sus expectativas. Parece que está acostumbrado a ver las URL que terminan con una extensión de archivo como ‘.html’ o ‘.php’, o con un separador de directorio como ‘/’. Esto es razonable, porque es un patrón común, y muchos sitios web tienen URL que coinciden.

Sin embargo, la forma en que un sitio web se asigna desde una URL, a algún contenido que ofrece, depende completamente del sitio web. Es decir, depende de cómo esté programado el software que impulsa el sitio web.

Primero observemos que la URL tiene varias partes. Hay una parte de protocolo (por ejemplo, ‘http: //’) y una parte de nombre de dominio (por ejemplo, ‘www.example.com’). Esos se manejan antes de que la solicitud llegue al sitio web. Luego hay una parte de ruta (por ejemplo, ‘/ acerca de’), y a veces una parte de consulta (por ejemplo, ‘? Página = 1 y longitud = 20’), y a veces una parte de anclaje (por ejemplo, ‘#contactos’). Estos son manejados por el software del sitio web.

Al principio de la web, el software del “servidor web” que recibió rutas URL, consultas y anclajes era bastante simple. Las páginas web se almacenaron como archivos en un árbol de directorios. La parte de la ruta de la URL correspondía a los nombres de directorio y nombres de archivo. Es convencional finalizar los nombres de archivo con una extensión que indica el tipo de contenido en el archivo: ‘.html’ para marcado HTML, ‘.php’ para código de lenguaje PHP. Estas extensiones de nombre de archivo se propagaron a través de las URL y se convirtieron en una convención que los usuarios podían ver y esperar.

Pero ahora, puede haber una acción de software muy compleja para separar una ruta URL, cambiarla a diferentes formas y pasarla a módulos de software que construyan una página web a partir de fragmentos almacenados en una base de datos. No es necesario tener archivos en un árbol de directorios correspondiente a cada URL. Por ejemplo, los sistemas de administración de contenido de Drupal o Joomla rompen una ruta URL como ‘/ about’ en una URL revisada como ‘/index.php?module=com_content&itemid=439’, y luego ejecutan el código en el índice del archivo del servidor web. php ‘para llamar a un fragmento de código para’ com_content ‘, que carga un elemento con el número de identificación 439 de una base de datos y crea una página HTML a partir de él. El sistema no busca en un directorio llamado ‘/ about’ un archivo HTML. En dicho sistema, el servidor web tiene un árbol de directorios lleno de archivos, pero los archivos y la estructura del directorio reflejan el código del sitio web, no su contenido.

Yendo un paso más allá, algunos sitios web aceptan URL no de humanos que leen el sitio con navegadores web (o arañas que imitan a dichos humanos), sino de otro software que usa la funcionalidad del sitio a través de servicios web RESTful. Aquí es menos probable que las URL tengan terminaciones ‘.html’ o ‘.php’.

Por lo tanto, no hay nada acerca de la definición de HTTP o de URL que requiera que los sitios web terminen con ‘.php’ o ‘.html’ o ‘/’. Es solo una expectativa que has desarrollado razonablemente, pero no es, como has descubierto, universal.

Porque te dirigen a un directorio , y no a una página . El servidor web luego sirve la “página predeterminada” para ese directorio.

Aunque su navegador web muestra http://www.example.com/about lo que realmente está mirando es http://www.example.com/about/index.htm

Entonces sí, estás viendo index.htm / index.php, etc.

Puede configurar varias páginas predeterminadas para un directorio, y el servidor web intentará servir la primera, luego la segunda, luego la tercera para que pueda establecer index.htm, index.html, index.asp index.cfm, predeterminado. asp, etc. etc.

La mayoría de lo que construyo está en ColdFusion, por lo que tengo las páginas de índice predeterminadas establecidas en index.cfm.

(Leí las otras respuestas bastante largas a esta pregunta y en realidad no todas responden la simple pregunta que estás haciendo. Espero que sí).

En realidad, la URL de su pregunta es así (How-do-some-websites-not-have-file-extensions-in-the-URL). Se llama URL compatible con SEO y la técnica se llama reescritura de URL. Puede encontrar más información sobre la reescritura de URL en la Guía de reescritura de URL. Esta guía es para el servidor web Apache, pero no es difícil aplicar URL compatibles con SEO en cualquier servidor web que al menos admita la ejecución de URL para errores 404 (página no encontrada).

La técnica es bastante simple: generalmente redirige todos los errores de “página no encontrada” a un solo script, usa la URL para ubicar la página en la base de datos (las URLS amigables para SEO generalmente se aplican a sitios web dinámicos que usan la base de datos) y devolver la página renderizada de la misma manera que con URL en forma somescript.php? pageid = 12345

Existen variaciones que permiten usar la misma página (registro) en la base de datos para servir contenido diferente (después de procesar diferentes URL) y se pueden hacer webs bastante complejas con el uso correcto de esta técnica.

La parte de la URL que usa Internet es el nombre de host (www.example.com). Todo después de eso se pasa directamente al host, y los diferentes tipos de hosts contienen diferentes tipos de recursos y pueden usar diferentes tipos de direccionamiento. Por lo tanto, puede significar cosas diferentes en diferentes hosts.

Sin embargo, generalmente un nombre de recurso sin extensión será una carpeta. Desde los primeros días de la web, lo que el host suele hacer en ese caso es buscar en la carpeta un archivo llamado index.htm o index.html y lo muestra. Algunos hosts también pueden buscar index.php.

Si ninguno de estos archivos existe, y si los permisos de los hosts están configurados para permitirlo, mostrará el contenido de la carpeta como una lista de recursos en los que se puede hacer clic, que consistirá en archivos y subcarpetas.

Normalmente, bu activa la reescritura de URL

ver Reescritura de URL para principiantes – Desarrollo web en Brighton – Bytes agregados