2010-04-05 17 views

Respuesta

0

Por lo que se refiere al protocolo, http://example.com/something y http://example.com/something/ son bastante diferentes. Algunos servidores pueden redireccionarlo de uno a otro si se implementa de esa manera.

En cuanto a los nombres de dominio puros, siempre envía una solicitud que termina con una barra inclinada. (El nombre de dominio no está incluido en la sección de ruta de una solicitud HTTP, como escribieron Greg Hewgill y los demás. Sin embargo, está incluido en los encabezados)

Puede verificarlo con una herramienta como Fiddler o WireShark.

+0

Esto es incorrecto. '/ something /' es diferente de '/ algo' en un sentido HTTP. http://googlewebmastercentral.blogspot.com.es/2010/04/to-slash-or-not-to-slash.html – Ryall

+0

@Ryall editó mi respuesta para aclarar. – Venemo

28

La solicitud HTTP enviada desde el navegador al servidor no incluye el nombre de dominio, solo la parte de "ruta" (a partir de la primera barra después del nombre de dominio). Como la ruta no puede estar vacía, se envía un / en ese caso.

una petición GET de la muestra para la raíz de un sitio web podría ser:

 
GET/HTTP/1.0 

El / anterior no se puede omitir.

+1

Para aclarar esto, el dominio se envía en el encabezado 'Host' (HTTP 1.1 solamente). – jholster

+0

¿Entonces lo que está diciendo es que incluso si tiene una ruta vacía, la URL tiene garantizada una barra diagonal? – Hank

+3

@Hank: Lo que digo es que * si * tiene una ruta vacía, se envía un '/'. Esto no dice nada acerca de las barras diagonales posteriores si la porción de la ruta * no * está vacía (en ese caso, el navegador envía exactamente lo que está en la barra de la URL, pero el servidor puede elegir redirigir el navegador en su respuesta). –

9

Tenga en cuenta que es una cuestión very different cuando la URL tiene un elemento de la ruta:

http://example.com/dir 

es una URL diferente de

http://example.com/dir/ 

y de hecho, podría contener un contenido diferente, y tienen una diferente posicionamiento en los motores de búsqueda.

+0

este es un buen punto. Se recomienda finalizar la URL con "/" –

+3

@Claudio, alguna referencia por favor? – jholster

+0

@Yaggo: eche un vistazo a google "trailing slash url". No recuerdo un solo lugar donde lo haya leído, lo siento, amigo. –

15

Como RFC 2616 dice:

3.2.2 URL http

El esquema de "http" se utiliza para localizar recursos de red a través de HTTP
protocolo. Esta sección define la sintaxis específica del esquema y la semántica
para las URL de http.

http_URL = "http:" "//" host [":" puerto] [abs_path ["?" consulta]]

Si el puerto está vacío o no, se supone puerto 80. La semántica
son que el recurso identificado es ubicada en el servidor para escuchar conexiones TCP en el que el puerto de esa anfitrión, y la Solicitud-URI para el recurso es abs_path (sección 5.1.2). El uso de direcciones IP en las URL DEBE evitarse siempre que sea posible (ver RFC 1900 [24]).Si el abs_path no está presente en la URL, DEBE indicarse como "/" cuando se utiliza como Request-URI para un recurso (sección 5.1.2). Si un proxy recibe un nombre de host que no es un nombre de dominio totalmente calificado , PUEDE agregar su dominio al nombre de host que recibió. Si un proxy recibe un nombre de dominio totalmente calificado, el proxy NO DEBE cambiar el nombre de host.

Leer más: http://www.faqs.org/rfcs/rfc2616.html#ixzz0kGbpjYWa

5.1.2 Request-URI
...
Por ejemplo, un cliente que desee recuperar el recurso arriba directamente desde el servidor de origen crearía una TCP conexión al puerto 80 del host "www.w3.org" y envíe las líneas:

GET /pub/WWW/TheProject.html HTTP/1.1 
    Host: www.w3.org 

seguido del resto de la solicitud . Tenga en cuenta que la ruta absoluta no puede estar vacía; si no está presente en el URI original, DEBE proporcionarse como "/" (la raíz del servidor).

Leer más: http://www.faqs.org/rfcs/rfc2616.html#ixzz0kGcaRbqU

Cuestiones relacionadas