【问题标题】:Codeigniter doesn't find assets(css|js|images)Codeigniter 找不到资产(css|js|images)
【发布时间】:2013-12-29 18:28:29
【问题描述】:

我在 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>

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

我该怎么办?

【问题讨论】:

    标签: php css codeigniter routing virtualhost


    【解决方案1】:

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

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

    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”,具体取决于您的服务器设置。)

    【讨论】:

    • 我有一个 .htaccess,它省略了 index.php 文件。\
    • 此线程上的更多相同内容:link
    【解决方案2】:

    这是我用于 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。

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多