search engine friendly script problem

I have written a search engine script using PHP ie accessing

calls a PHP script called "catalogue" that passes in the values "chairs" and "a.html". My script then goes into the directory "chairs/a.html" and spits out the information after inserting them into a template html page to make it fit the theme of my website. The problem is that paths all seem to be wrong and all the images and CSS style sheet links are invalid. If I just for debugging sake hardcoded "chairs" and "a.html" as parameters within the script then just called

everything is displayed correctly! so the "/chairs/a.html" appended after the url is causing the invalid paths. How can I fix this? I don't really want to make use of absolute paths in my theme page.
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

rukimanAuthor Commented:
I might also add that the a1.html has content that links to images and these are relative to the chairs directory while the template that the catalogue script is using is relative to the home directory.
You should show us a bit of your code.

Don't forget that if you include some files in php, the path is relative to the main file...

For example:
your directory:


index.php includes

and in chair.html you want to display:

you'll have to use: <img src="images/chair.png" width=... /> and not <img src="../images/chair.png" width=... />

if that's not the point, post some code... we'll see !
The problem is, your browser sees the URL "" and doesn't know that catalogue is actually the php page.  When the a.html page references an image or a stylesheet with a relative URL, the browser will send a request to, for example:

I haven't seen your code for the catalogue script, but I bet it sees this request and tries to treat the image.jpg file as a template, just like the a.html page.

Your best solution would be to either
* Use absolute locations to all your images & css files, which are served directly via the webserver without going through the catalogue php script
* Make the catalogue script smarter to not treat non-html files as templates
* Use <base href=""> to set the base URL for all relative links in a page.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
rukimanAuthor Commented:
ok I dont have the code with me on this computer but hope this helps

a1.html has the following content

this is a test <img src="cat.jpg"></img> woo hoo

the catalogue PHP script is as follows


// get the directory and filename from the url as we are using GET
// $dir is the first input, $page is the second input

$basedir = "htmlcatalogue/";

$file = file( $basedir . $dir . "/" . $page);


ok lets see what we pulled out: <br>
<? php echo $file ?>

<img src="dog.jpg"></img>


and here is the directory structure

htmlcatalogue ------------------->adapt-------->a1.html
catalogue (php script)


the script is invoked as follows:

Do this:  right-click on the broken 'cat' image and open it in a new window in your browser.  Look for error messages.  Also, look at the URL.  The URL for the cat image is calling the catalogue php script.  Simplest fix is to keep any images/external stylesheets/javascript stuff in a separate directory, and reference it using the complete URL.

<img src="" />
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.