Relative URLs in AJAX requests

Solution 1:

(updated to make it more readable)

This is how relative paths is supposed to work.

Pretend that the current address is this:

Absolute: protocol://some.domain.name/dir1/dir2/filename


If you specify only a new filename "foo", you get the same protocol, host and dirs, only the file name is changed:

Relative: foo

Absolute: protocol://some.domain.name/dir1/dir2/foo


If you specify a whole path "/dir3/filename2" you get the same protocol and hostname but with another path:

Relative: /dir3/filename2

Absolute: protocol://some.domain.name/dir3/filename2


You can also specify host name "//another.domain.name/dir5/filename3" and get the same protocol but another host, dir and filename:

Relative: //another.domain.name/dir5/filename3

Absolute: protocol://another.domain.name/dir5/filename3


What might be confusing is that a webserver internally can add a / at the end of the url if the specified url points to a directory and not to a file.

protocol://some.domain.name/somename

If "somename" is a directory the webserver might translate it to (possible with a redirect)

protocol://some.domain.name/somename/


UPDATE

As cameron said in a comment: For reference, see step 6 in section 4 of RFC 1808