【问题标题】:strange behaviour in codeigniter with loading of css, js, img fileswhen slash (/) added at end of url在 url 末尾添加斜杠 (/) 时加载 css、js、img 文件时 codeigniter 中的奇怪行为
【发布时间】:2011-07-21 19:15:23
【问题描述】:

我非常了解 Codeigniter,但在尝试将静态站点转换为 CI 时遇到了这个问题。使用某些 url 时加载 css 文件时会出现问题。我试图严格让 php 远离视图(事实上希望只有 .html 页面用于视图)。

我还搜索了许多论坛以寻找加载 css 的解决方案。我遇到了一些解决方案,但只有当您在 CI 中创建一个全新的站点时它们才会有所帮助。我知道

在 href 链接之前使用以使其站点独立

但不想使用它,因为我想将现有的静态网站转换为 CI。这意味着更改每个文件的每个href。 (如果页面很多,这似乎是一场噩梦)。

在某些情况下,我无法加载 css 和其他资源文件。以下是我迄今为止在该项目中所做的一切的描述。

  1. 在根目录下使用 .htaccess 删除“index.php”文件
  2. 使用codeigniter 2.0.2自带的标准文件夹结构
  3. 所有图像和资源(例如 css、img、js ......等)都直接放在根文件夹中(即应用程序和系统文件夹所在的位置)
  4. 从视图文件访问所有资源,就好像 html 文件与资源一起位于根文件夹中一样(例如 href="css/style.css")

以下是控制器的示例说明

class Blog extends CI_Controller {

public function index(){
    $this->load->view('blog.html');
    }

public function posts(){
    $this->load->view('post.html');
    }
}

现在我面临的问题是当我将某个 url 用于“索引”功能时。 . css 被正确加载。

但如果我在此之后添加一个斜线或使用任何其他功能。加载 css 时出现问题。

例如。

 /* This url loads css correctly */
http://localhost/ci-test/blog

 /* these urls do not load css */
http://localhost/ci-test/blog/
http://localhost/ci-test/blog/posts

我做错了什么吗?还是我的 .htaccess 文件有问题? (包括在下面)

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

我需要做些什么才能以最小的努力将当前网站导入 CI。

【问题讨论】:

    标签: css url codeigniter structure


    【解决方案1】:

    你可以试试这样的:

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

    不确定最后一条规则是否有效,因为我不知道 CI 的路由是如何工作的,但它是我过去使用 Zend 和 Symfony 路由器的方式。

    【讨论】:

      【解决方案2】:

      从视图文件中访问所有资源,就像 html 文件与资源一起位于根文件夹中一样(例如 href="css/style.css")

      好吧,如果浏览器看到的外部 URL 可能有许多级别的嵌套目录,那是行不通的,可以吗?要从ci-test/blog 使用相对 URL,您必须引用 css/style.css,而要从 ci-test/blog/posts 使用它只能是 ../css/style.css

      我建议用 /ci-test/css/style.css 之类的根 URL 替换所有引用,或者如果使用 <base href="/ci-test/"><head> 中的类似内容来使所有相对 URL 的行为与根 URL 相关,那么工作量太大。

      【讨论】:

        猜你喜欢
        • 2016-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多