I typically refer to any assets on my site using absolute path so that I don’t have to worry about the location of the assets relative to current file.
<!-- Using a absolute path. -->
<img src="/images/flag.png" />
<!-- Using a relative path. -->
<img src="../../../images/flag.png" />
However, this time I need to host the site at a non-root location e.g. http://my-server.com/holiday/.
How would I go about this? I am looking for a solution that doesn’t require me to change the path in my files. How do I configure the server (Apache) to treat http://my-server.com/holiday/ as a “root”?
Clarification:
I still need http://my-server.com/ to behave “normally”. That is, it should still point to http://my-server.com/index.html i.e. doesn’t get redirected to http://my-server.com/holiday/.
I hate to say this but none of the above provides the solution. The answers by @Zoltan and @stslavik were close but, unfortunately, didn’t work when deployed; I wished one of them worked, though.
As a result, I resorted to using a combination of named constants and include files in PHP. More details: File Structure for a PHP Project. Note that it doesn’t have to be PHP; you can use other languages that provide similar features. +1 for @margusholland whose answer led me to experiment with this solution.