URL del sitio web que oculta / oculta el archivo

3

Algunos sitios web, independientemente de la página en la que se encuentre, siempre muestran su nombre de dominio en la barra de direcciones y nada más.

Y muchos muestran las carpetas, por ej. https://superuser.com/questions/ask , pero no muestra el archivo real, que sería como http://domain.tld/folder/file.extension.

¿Cómo se logran ambos?

mk12
fuente

Respuestas:

9

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

Josh Hunt
fuente
¿Dónde se colocará ese código?
mk12
Dependería de la configuración del servidor o del marco que se esté utilizando. Voy a actualizar mi pregunta adecuadamente.
Josh Hunt
¿Qué pasa con Google, por ejemplo, google.com/search?client=safari&rls=en&q=superuser&ie=UTF-8&oe=UTF-8, la búsqueda de aviso no tiene extensión de archivo ...
mk12
@ Mk12: El programador puede elegir usar cualquier URL que desee. Podría escribir una aplicación web que ponga .php al final de cada URL, cuando en realidad no hay archivos PHP en ninguna parte del servidor. Así que Google decidió simplemente usar "búsqueda" sin ninguna extensión. Podrían haber hecho algo como esto, si hubieran querido (y en realidad no hubiera cambiado nada): google.com/search/client=safari/q=superuser/
Sasha Chedygov
De todos modos, +1, buena descripción.
Sasha Chedygov
1

El archivo es el predeterminado, tal como se define en la configuración de los servidores web, o está usando la reescritura de URL (la ruta de la carpeta puede que ni siquiera exista)


fuente
Vaya ... olvidé abordar la pregunta del nombre de dominio ... Esto se puede hacer usando un conjunto de marcos y solo mostrando el marco del contenido.
Puedes editar tu respuesta en lugar de escribir un comentario.
Sasha Chedygov
IIRC, una persona con una reputación de 1 no puede editar sus propios mensajes.
CarlF
¡Allí, él puede editar! Abs, ¿te importaría editar tu respuesta para incluir el comentario?
Josh Hunt
0

Lo que realmente estaba buscando es esto: solo cree un directorio, tenga index.php / html dentro de la carpeta y los enlaces a ese directorio no mostrarán el archivo. Gracias por las otras cosas también.

mk12
fuente
1
Eso es realmente un truco ... la reescritura de URL o los punteros de contenido son más comúnmente la forma en que se realiza
Chris Thompson