问题
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?
回答1:
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).
回答2:
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.
回答3:
/ 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.
回答4:
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.
回答5:
Just a side note that search engines view these as 2 different pages. Thus hurting your seo.
来源:https://stackoverflow.com/questions/1456967/why-would-you-need-a-slash-at-the-end-of-a-url