In a question regarding a jQuery Ajax problem, the asker was trying to use a .
in the beginning of a relative URL. I advised him to remove it, but have no idea what a dot actually does there.
His relative URL looked like this:
./delete-misc/test-ajax-code.php
I tried looking in the RFCs, without success. I know what the dot does in command line (either Linux or Win), it represents the current directory.
I'd like to know: how does this work on the Internet in a URL? Does it have any best-practice uses? Detailed explanations are most welcome.
Adding the dot to the end of the domain name makes it an absolute fully-qualified domain name instead of just a regular fully-qualified domain name, and most browsers treat absolute domain names as being a different domain from the equivalent regular domain name (I'm not sure why they do this though).
(dot dot) This refers to the parent directory of your working directory, immediately above your working directory in the file system structure. If one of these is used as the first element in a relative path name, it refers to your working directory.
Relative paths refer to file locations based on the current directory. That is, they often refer to locations in the form of “up one directory level” and often begin with one or two dots (“.”). An example would be “../index. html” which would refer to the file “index.
The path segment .
is typically used at the begin of relative path references and are removed during the reference resolution, i.e. the process of resolving a relative URI reference to an absolute URI:
The path segments "
.
" and "..
", also known as dot-segments, are defined for relative reference within the path name hierarchy. They are intended for use at the beginning of a relative-path reference (Section 4.2) to indicate relative position within the hierarchical tree of names. This is similar to their role within some operating systems' file directory structures to indicate the current directory and parent directory, respectively. However, unlike in a file system, these dot-segments are only interpreted within the URI path hierarchy and are removed as part of the resolution process (Section 5.2).
There is Remove Dot Segments algorithms that describes how these dot segments are to be interpreted in a certain base path context.
In your case both ./delete-misc/test-ajax-code.php
and delete-misc/test-ajax-code.php
are equivalent. But there are cases where a relative path can be misinterpreted as an absolute URI, e.g. having a :
in the first path segment like search:foo
that is different to ./search:foo
as the former is an absolute URI while the latter is a relative URI path.
A ./
in front of the URL is equivalent to the current path. So ./delete-misc/test-ajax-code.php
and delete-misc/text-ajax-code.php
are both relative paths. In the answer you posted, you asked to remove the dot only, so the path of /delete-misc/test-ajax-code.php
would translate as an absolute path instead of a relative path.
Edit: one more thing - .
is the current directory and ..
is the parent directory. As phihag comments, these really should be avoided and protected against in code. Directory traversal can be used for evil.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With