我想保持应用程序文件夹中的assets文件夹不在外面

时间:2014-04-27 16:41:12

标签: codeigniter assets

我在标题中的问题

我想将应用程序文件夹中包含(css, js, images)的assets文件夹保留在外面。
如果我将assets文件夹保留在应用程序文件夹中,则无法访问其中的文件。

.htaccess文件代码

RewriteEngine on
RewriteCond $1 !^(index\.php|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L]

标准的应用程序结构:

  • 应用
    • 应用
    • 资产
    • SYS
    • 的.htaccess
    • 的index.php

之前的结构没有错误。

我希望结构如下所示:

  • 应用
    • 应用
      • 资产
      • 配置
      • 控制器
      • ......
    • SYS
    • 的.htaccess
    • 的index.php

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您的问题是,您使用的.htaccess文件正在重写静态资产的网址,从而破坏了链接,因此您需要对其进行更改。

如果您将assets/文件夹保留在应用程序的根目录中,并将.htaccess修改为类似的内容,则可以解决问题:

RewriteEngine on
RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L]

更改位于第二行 - 基本上条件是"如果路径不是以index.php,assets或robots.txt开头,则重写它以包含index.php开始&#34 ;.增加资产应解决问题。

编辑:默认情况下,CodeIgniter在application/文件夹中有一个.htaccess文件,该文件拒绝访问其中的任何内容。如果您确实希望能够从该文件夹提供静态文件,则可以修改该文件。但是,这将是一个非常糟糕的主意。您的静态资产应该存在于Web根目录中,并且尝试从应用程序文件夹中提供它们将充满问题 - 如果您允许从外部访问application/目录,则可能会导致一些严重的安全问题。