【问题标题】:Codeigniter: Unable to access the StylesheetsCodeigniter:无法访问样式表
【发布时间】:2013-10-05 18:42:28
【问题描述】:

我有以下 Codeigniter 文件夹的目录结构。您可以看到我已将所有资产放在应用程序根目录下的assets 文件夹中。

基本 URL 定义为

$config['base_url'] = 'http://kamran.dev/Codeigniter/application/';

我尝试将其修改为

$config['base_url'] = 'http://kamran.dev/Codeigniter/';

但这也没有用。

任何人都可以看看并告诉我我在这里做错了什么吗?

附:然后我从包含

application 文件夹中删除了 .htaccess 文件

拒绝所有人

这对我有用。但这似乎不是一个好主意。

【问题讨论】:

  • 我觉得这个问题也和你的其他问题有关……
  • 你可以这么说。但这更多是与htaccess 相关,所以我将其放在单独的一个中。
  • 我认为一旦您获得了 .htaccess 访问权限,请更改您的 base_url 我推荐它的方式,您应该一切顺利。

标签: php codeigniter


【解决方案1】:

您有多种选择。最简单的一种是将资产文件夹移动到与应用程序相同的级别,以便您的目录结构为:

  • 应用
  • 系统
  • 资产
    • CSS
    • img
    • js

因为 assets 文件夹不在带有 Deny From All 的 .htaccess 文件夹中,它不会被您的网络服务器阻止。

或者,您可以使用以下规则在 assets 文件夹中添加一个 .htaccess 文件:

# /assets/.htaccess
Allow from all

我没有对此进行测试,但我认为它应该可以工作。

另一种选择是更改 .htaccess 并在资产文件夹上放置一个例外,但删除 Deny From All 而不编写替代规则来锁定所有不应访问的文件夹是一个非常糟糕的主意(具有安全隐患) .

另外,将您的base_url 设置为包含应用程序、系统和资产目录的文件夹(该文件夹包含 Codeigniter 的引导程序/前端控制器 index.php)。

另外,我建议您使用 base_url() 函数回显您的网址:

base_url("assets/css/bootstrap.min.css");

或者调用控制器/路由

base_url("controller/method");

base_url 函数考虑了$config['index_page'] 的值以及必要的前导/尾随斜杠。

【讨论】:

    【解决方案2】:

    将您的 base_url 更改为以下内容:

    echo base_url("assets/css/file-name-here.css");
    

    您希望将 URL 字符串传递给 base_url 函数。这样,您可以将 $config['base_url'] 更改为您想要的任何内容,它会正确地将字符串附加到该 URL。

    【讨论】:

      【解决方案3】:

      作为严峻答案的补充。如果你有你的重写引擎,你的根目录中应该有以下内容。htaccess

      <IfModule mod_rewrite.c>
      
      RewriteEngine on
      
      RewriteCond $1 !^(index\.php|assets|robots\.txt)
      RewriteRule ^(.*)$ index.php/$1 [PT,L]  
      
      </IfModule>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-20
        • 2016-06-12
        相关资源
        最近更新 更多