Where to put resources (css/images) in CodeIgniter? [duplicate]
I am doing some testing with CI and have it running in a folder. http://www.example.com/sub-folder/ for instance
My directory structure is like this (where / is sub-folder/):
/ |-/system |-/applicationI have eclipse as my IDE with 2 projects, 1 for system, 1 for application, where application is my project that includes a reference to system.
My .htaccess file prevents access to system directory. I would like to have my images and CSS placed into: application/resources/images and application/resources/css respectively. I would like to be able to use <link rel="stylesheet" href="/sub-folder/css/style.css" />
However, after spending some time testing and searching, I haven't b开发者_C百科een able to get the CSS file to load from the application directory.
What do I need to change or add in my .htaccess to be able to do this?
The contents of my .htaccess follows:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
### Canonicalize codeigniter URLs
# If your default controller is something other than
# "welcome" you should probably change this
RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ / [L,R=301]
RewriteRule ^(.*)/index/?$ $1 [L,R=301]
# Removes trailing slashes (prevents SEO duplicate content issues)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]
# Removes access to the system folder by users.
# Additionally this will allow you to create a System.php controller,
# previously this would not have been possible.
# 'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
# Checks to see if the user is attempting to access a valid file,
# such as an image or css document, if this isn't true it sends the
# request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Instead of
<link rel="stylesheet" href="/sub-folder/css/style.css" />
You could do
<link rel="stylesheet" href="<?php echo base_url('application/sub-folder/css/style.css'); ?>" />
I usually keep my assets in the root folder (where the main index.php file is) and use this asset library to load everything.
If you want to keep your assets in application/sub-folder
you could do this:
I set up my CI projects like this:
- application (my application files)
- assets (publicly accessible css, js and images etc)
- system (codeigniter core)
Typically, if I'm building in a CMS I'll put the CMS assets inside the application folder since they're basically private.
精彩评论