Problem loading CSS file with relative path |
[eluser]mihaibaboi[/eluser]
Hello, I hope I'm not starting a new topic for nothing. I had a look around and couldn't find anything that matches my problem. I guess it's a very trivial problem, but there's something I'm missing. Here's the problem. I've set up CodeIgniter like this: D:\work\php\www\codeigniter\ (where "D:\work\php\www\" is the document root on my local server) I have a view file located at D:\work\php\www\codeigniter\system\application\views\layout.php I want to set up an external css file that's located in D:\work\php\www\codeigniter\system\application\views\css.main.css To do that wrote: Code: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> The problem is that it refuses to apply the styles that I wrote in my css file, and when I inspect it with FireBug, the <link> tag has a 404 error. I also tried writing it like this: Code: <link href="system/application/views/css/main.css" rel="stylesheet" type="text/css" /> because I figured that it would be relative to the index.php file in the codeigniter folder. It didn't work. Any ideas? Sorry for the long post, but I wanted to provide you with all the details that I thought might help. Thanks
[eluser]bobbob[/eluser]
Put your css file in the root of your site where the index.php is which is also where the system folder is. Then reference it as http://yousite.com/css.css This applies to all your images,js etc
[eluser]Bart v B[/eluser]
is it not easyer to make absolute paths? What i always do, is work with the helper url. in youre application/config/autoload.php Code: $autoload['helper'] = array('url'); Code: $config['base_url'] = "http://path to youre site/"; in youre view: Code: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Then it's alway's correct
[eluser]mihaibaboi[/eluser]
@bobbob Thanks for your help. Your idea works, but I don't like to put my css files in the root of my site. I feel it goes against the framework model. I have a views folder, so I can keep the UI files there. @Bart v B That's a more elegant solution. For now, I just hard coded an absolute path to see if it works, and it does. I'm sure that the autoload will work, but I don't have the time to tinker with it right now. I'll get back if I encounter any problems. It still bugs me that I can't get it to work with a relative path. I'm sure that there's a small thing that I'm missing. I'm new to CodeIgniter and I don't know about the design patterns that are commonly used. I'm used to relative paths, but if I can't do it, tough... I can work with an absolute path just as well. Thanks.
[eluser]Bart v B[/eluser]
you can also use <link href="../css/main.css" rel="stylesheet" type="text/css" /> what it means, that it goes to de docroot, and from there to the folder css/ But, my first solution works al the time.. If you put it on a other application / website it still works. EDIT better explaination: It does not have any thing to do with design paterns.. It is just a file/folder/paths problem what you have.
[eluser]mihaibaboi[/eluser]
@Bart v B Ok, so it worked with a ../ approach but I had to write the code like this: Code: <link href="../system/application/views/css/main.css" rel="stylesheet" type="text/css" /> I'm still having a little trouble wrapping my head around how CodeIgniter sees relative paths but I guess I'll get it in the end... Thank you for all you help
[eluser]egunay[/eluser]
@mihaibaboi Did you try to use absolute path? "/system/application/views/css/main.css" Ofcourse I don't know your virtual server configuration so if the "/" points to "D:\work\php\www\codeigniter\" you shouldn't be getting any problems. Instead if "/" points to "D:\work\php\www\" you should also add your codeigniter folder to link href. "/codeigniter/system/application/views/css/main.css" Also check your .htaccess configuration. For example take a look at mine: Options +FollowSymLinks Options -Indexes DirectoryIndex index.php RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.*)$ /index.php/$1 [L] Hope it works for you.
[eluser]mihaibaboi[/eluser]
Thanks @egunay. I'm at the office right now, so I can't try your solution until tonight. Being that I'm in a development environment, I don't have a .htaccess file right now, but I will create it, and I'll take your solution into account. I'll get back to you with the results.
[eluser]egunay[/eluser]
Your welcome, Let me know if it works for you because I had the exact same problem yesterday and solved it with this way.
[eluser]Tominator[/eluser]
If you use this template parser: http://ellislab.com/forums/viewthread/153269/ You can do everything without using .htaccess or helpers, just: Code: <link href="{T_Folder}/css/main.css" rel="stylesheet" type="text/css" /> |
Welcome Guest, Not a member yet? Register Sign In |