Is there a way to use htaccess to tell a subdirectory to act as the root for the entire site?
For example, if I had a website under http://localhost/testsite/ and in it's index.php file I had a reference to the stylesheet using the following code..
<link rel="stylesheet" type="text/css" href="/css/layout.css" />
Could I then make that load /localhost/testsite/css/layout.css?
To get around this problem, I set up localhost subdomains for each site which although works, is not ideal.
Many thanks.
Sure, all relative URIs (as yours) are relative to the base URI which by default is the URI of the document:
You only need to tell which part to add:
Example:
If you need to have this more modular, there are multiple ways to do that. One is to set the base URI explicitly inside the HTML document (see
<base>
).Another one is to resolve links relatively on the server-side based on the Request URI and your site's root-path. See this answer for an example.
If you want to keep the 'href="/css/layout.css"' part, then yes, you can set up a rewrite rule. You just have to be careful not to redirect anything starting with /testsite (or you'll end up with a loop).
Like (in root .htaccess):
There, you will be able to access your layout.css file either from:
http://localhost/testsite/css/layout.css
or
http://localhost/css/layout.css