You need to use base_path()
e.g., <?php print base_path() . path_to_theme(). '/images/whatever.gif' ?>

In the first case, using l() or url() should be it, would you post an example wrong link being generated out of them?

Cheers,

On 4/23/07, Ashraf Amayreh <mistknight@gmail.com> wrote:
Hello all,

Don't know if this is the best place for this, so if it's already discussed elsewhere, I'll be thankful if you could point me to the URL cause I couldn't find anything myself. I'm really having a tough time when creating URLs to other parts of a Drupal site. Especially when I'm using clean URLs and even more when I have Drupal as a subfolder like http://example.com/mydrupalsite (in which case the internal node page could be something like http://example.com/drupal/node/5)

As far as I've noticed, there are three cases of referencing, this is how I do it, but I'm positive that there's something wrong or else I wouldn't get broken links and/or images when I toggle clean-urls on and off and when I have my site as a domain opposed to a subfolder:

1. Referencing another page, in this case I use l() or url() with relative paths to get the link
2. Referencing a file in the themes folder in which case I use src="<?php print path_to_theme().'/images/whatever.gif';?>
3. Referencing a file in the files folder in which case I use href="<?php print file_directory_path().'/whatever.zip';?>

The main headache cause is the second one. If I have clean URLs on and the site as a domain ( http://example.com/) then the paths are wrong on node pages. Although this may be a bug or something, I need to know the standard way of referencing any and all paths before I jump to conclusions. Would be grateful if someone could shed the light on this :-)