Esto se debe a un poco de una idea errónea de lo que realmente es una URL, probablemente ayudada por los días de archivos .HTML estáticos y scripts PHP.
Tradicionalmente, todo lo que pasa del TLD es un puntero a un archivo específico. Digamos que una entrada de blog se encuentra en example.com/blog/2009/oct/18/what-have-we-come-to
. Sin el uso de técnicas sofisticadas, significaría que hay una carpeta llamada blog, y en eso hay una 2009
carpeta, y en eso una carpeta para cada mes, y en esas carpetas OTRA carpeta para todos los días del mes. Claramente, esto se complica muy rápidamente.
Es por eso que los servidores web (como Apache) y los lenguajes de programación (como PHP) se inventaron Reescritura de URL . Lo que hace es convertir la URL mencionada en algo un poco más manejable, como example.com/blog/articles.php?id=423
. Aquí, un articles.php
el script utilizará la ID de publicación proporcionada para buscar la publicación correspondiente, luego mostrará la publicación, pero el usuario seguirá viendo la URL como example.com/blog/2009/oct/18/what-have-we-come-to
.
Otro enfoque simplemente desecha todo esto por completo. Todo más allá del TLD (en este caso, /questions/56772/website-url-hiding-hiding-file
) es simplemente un puntero a contenido , no necesariamente un archivo. Algunos sitios web, como Superusuario, se crean utilizando un enfoque MVC (Modelo-Vista-Controlador). Por lo general, esto implica una lista de URL para un sitio web y las asigna a las funciones y el código aplicables para mostrar esa página. Por ejemplo, el Superusuario podría verse así 1 :
'superuser.com/' > displayFrontPage()
'superuser.com/questions/' > displayQuestionsList(sorted=default)
'superuser.com/questions/<QuestionID>/<QuestionID>' > displayQuestion(question= QuestionID)
Esto se colocaría más comúnmente en un archivo por sí mismo. Un diseño común podría ser:
superuser/
controller.aspx (which contains the list of URLs and points to a view in views.aspx)
views.aspx (which contains all the code for the superuser, such as displayFrontPage() and displayQuestion(question= QuestionID))
models.aspx (which contains information about the table in the database.)
1 Por favor, tenga en cuenta que no tengo idea de cómo funciona el controlador para ASP MVC (soy más un tipo de Django), por lo que probablemente no sea tan preciso. Es solo un ejemplo