Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why would you need a slash at the end of a URL?

Is there a difference between these URLs in regards to having slashes at the end of the URL?

https://drchrono.com/about_us
https://drchrono.com/about_us/

Do web frameworks and web servers (e.g. Apache, Nginx, Django) handle these requests differently?

like image 433
Daniel Kivatinos Avatar asked Sep 21 '09 21:09

Daniel Kivatinos


5 Answers

The browser will treat them differently when it comes to relative URLs. A page at:

http://server/path

with a relative link like:

<a href='other'>

will resolve that link to:

http://server/other

replacing path with other. Whereas if the starting URL was:

http://server/path/

then the resolved link would be:

http://server/path/other

If path is a directory rather than a file, most web servers will automatically redirect from:

http://server/path

to:

http://server/path/

because that's almost certainly what you meant.

like image 97
RichieHindle Avatar answered Nov 18 '22 17:11

RichieHindle


In Django URLs without forward slashes automatically have a forward slash appended to them. This is a preference of the Django developers and not a hard-coded rule of the web (I think it's actually a setting in Django).

like image 37
Kai Avatar answered Nov 18 '22 19:11

Kai


/ is the separation character.

From the RFC

Some URL schemes (such as the ftp, http, and file schemes) contain names that can be considered hierarchical; the components of the hierarchy are separated by "/".

Having a / at the end states that there might be more stuff in the url.

like image 39
Ólafur Waage Avatar answered Nov 18 '22 18:11

Ólafur Waage


Just a side note that search engines view these as 2 different pages. Thus hurting your seo.

like image 2
corymathews Avatar answered Nov 18 '22 17:11

corymathews


They are handled as different requests, although they might match the same resource/handler/routine at the end and be processed in the same way.

As the one with / is supposed to be something similar to a directory, all relative links will be inside the / i.e. previous/target/something ... while the one without will have the relative links be at the same level previous/something.

like image 1
eglasius Avatar answered Nov 18 '22 19:11

eglasius