Codeigniter找不到资产(css | js | images)

时间:2013-12-11 16:45:44

标签: php css codeigniter routing virtualhost

我在Windows中有以下虚拟主机配置:

NameVirtualHost *
  <VirtualHost *>
    DocumentRoot "C:\xampp\htdocs"
    ServerName localhost
  </VirtualHost>
  <VirtualHost *>
    DocumentRoot "C:\xampp\htdocs\example"
    ServerName example.com
  <Directory "C:\xampp\htdocs\example">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

我在example的{​​{1}}文件夹中有资源文件夹。 问题是,当我打开htdocs(xampp)时,它会查看没有资源的页面(抛出example.com/home)。

我该怎么办?

2 个答案:

答案 0 :(得分:0)

我以前遇到过这个问题。基本上,codeigniter控制所有路径。您需要设置.htaccess文件,该文件允许某些路径避免使用codeigniter,例如css,javascript,images等。

这样的事情应该会有所帮助:

DirectoryIndex index.php index.html index.htm

RewriteEngine on
RewriteCond $1 !^(index\.php|images|img|css|js|style|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ index.php/$1 [L] 

(您可能需要也可能不需要更改最后一行;“index.php / $ 1”可能需要为“/index.php/$1”,具体取决于您的服务器设置。)

答案 1 :(得分:0)

以下是我用于Apache 2.4的配置的变体 - 可能需要一些语法更改才能适用于2.2,但重写规则应该没问题。

RewriteEngine On
RewriteBase /

# codeigniter urls
RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ / [L,R=301]
RewriteRule ^(.*)/index/?$ $1 [L,R=301]

# remove trailing slashes
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]

# application routing
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

“应用程序路由”部分告诉Apache仅在路径不存在为文件或目录时才将请求路由到PHP。