2009/2/16 Ashley Sheridan <ash@xxxxxxxxxxxxxxxxxxxx>: > On Mon, 2009-02-16 at 20:34 +0000, Stuart wrote: >> 2009/2/16 Paul M Foster <paulf@xxxxxxxxxxxxxxxxx>: >> > On Mon, Feb 16, 2009 at 07:30:57PM +0200, Thodoris wrote: >> > >> >> >> >>> I'm submitting a url like this: >> >>> >> >>> http://mysite.com/index.php/alfa/bravo/charlie/delta >> >>> >> >>> The index.php calls has code to decode the url segments >> >>> (alfa/bravo/charlie/delta). It determines that the controller is alfa, >> >>> the method is bravo, and converts charlie and delta to $_GET['charlie'] >> >>> = 'delta'. It verifies that the controller and method exist, and calls >> >>> the controller and method. >> >>> >> >>> This works fine. The right controller gets called and the right method, >> >>> and the GET parameter looks like it should. The method sets some >> >>> variables and then calls a render() function to render the page, which >> >>> is in the doc root of the site. >> >>> >> >>> The page does get rendered, but without the stylesheet, and none of the >> >>> graphics show up. Why? Because, according to the logs, Apache appears to >> >>> be looking for the images and everything else in the directory >> >>> index.php/alfa/bravo/charlie/delta, which of course doesn't exist. >> >>> >> >>> No, I don't have an .htaccess file with RewriteEngine on. Apache figures >> >>> out that index.php is the file to look for in the original URL, but >> >>> can't figure out that everything else is relative to that file, not the >> >>> entire URL. >> >>> >> >>> This method is in use in at least one other MVC framework. What am I >> >>> doing wrong? >> >>> >> >>> Paul >> >>> >> >>> >> >> >> >> I assume that in order for this to work you will have to use mod_rewrite >> >> for apache to work properly. Check the framework's installation >> >> instructions to see if you configured mod_rewrite correctly for this to >> >> work properly. >> > >> > mod_rewrite isn't involved. Apache has a "lookback" feature that "looks >> > back" through the URL until it finds an actual file it can execute, >> > which in this case is index.php. Unfortunately, it appears that Apache >> > believes the directory in which linked files are found is the *whole* >> > URL. >> > >> > mod_rewrite might resolve this, but it isn't allowed on all servers. So >> > it's not a reliable solution. >> >> This is your problem, you're not understanding where the paths are >> being resolved. Apache has absolutely no involvement in resolving >> relative paths in your HTML files to absolute URLs. The browser does >> this. All you need to do is use absolute URLs and everything will work >> fine. By absolute, in case you don't know, I mean starting with a / >> and being "from" the document root in the web server. >> >> For example, if you have a tag like <a href="arse.php">arse</a> and >> arse.php is in the same directory as index.php you need to change it >> to <a href="/arse.php">arse</a>. >> >> Another example... if you have <a href="somedir/crack.php">crack</a> >> where crack.php is in the subdirectory somedir beneath where index.php >> is you need to change the tag to <a >> href="/somedir/crack.php">crack</a>. >> >> You need to apply this to all URLs in your code, including >> stylesheets, images and javascript references. This should not be a >> difficult concept to grasp, so maybe I'm not explaining it right. If >> so please explain what you understand by what I'm saying and I can >> alter it to be more helpful. >> >> -Stuart >> >> -- >> http://stut.net/ >> > I've read through this thread and not noticed anyone mention the <base> > tag. This allows you to specify a URL to which relative ones are mapped > to, which could be just what you're looking for, as I believe all the > browsers support it (the tag has been around for donkeys years, so I'd > be surprised if any browsers didn't support it) That should also work, yes. Personally I'd use absolute URLs but each to their own. -Stuart -- http://stut.net/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php