Htaccess文件 - 在某些文件夹中找不到404页面

时间:2016-04-30 14:44:21

标签: .htaccess codeigniter

我正在使用codeigniter而且我的日志文件中仍然存在这些404错误。

ERROR - 2016-04-30 16:41:15 --> 404 Page Not Found: Assets/js
ERROR - 2016-04-30 16:41:15 --> 404 Page Not Found: Assets/js
ERROR - 2016-04-30 16:41:18 --> 404 Page Not Found: Assets/js

因此,每次页面加载都会导致日志文件中出现上述错误。我的htaccess文件如下所示。这里出了什么问题?

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ index.php?/$1 [L]

    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ index.php?/$1 [L]

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


    RewriteCond $1 !^(index\.php|assets|myadmin|robots\.txt)
    RewriteRule ^(.*)$ index.php?/$1 [L]

</IfModule>
<IfModule !mod_rewrite.c>
    ErrorDocument 404 /index.php
</IfModule>

我可以确认assets/js是有效的文件夹。

1 个答案:

答案 0 :(得分:0)

您是否可以通过网络路径访问资源文件夹?例如http://localhost/assets(如果您的网络服务器中没有启用索引,请尝试检索文件,例如http://localhost/assets/css/style.css),是否加载?

如果正在加载,您可能在不使用基本路径的情况下调用您的资源,这意味着视图正在尝试直接从其自己的文件夹中调用。

使用site_url()是一个非常好的步骤(url helper)...我建议你通过制作一个简单的帮助器并将其添加到包含(类似)的自动加载来让你的生活更容易调用资产:

if (!function_exists('assets'))
{
/**
 * Base asset directory call
 */
function assets($var)
{
    $CI =& get_instance();
    $CI->load->helper('url');

    return site_url('assets') . '/' . $var;
}
}

然后你会在你的视图中调用它:

<!-- load CSS -->
<link href="<?php echo assets("css/bootstrap.min.css") ?>" rel="stylesheet">

然后它会在呈现后显示:

<link href="http://localhost/assets/css/bootstrap.min.css" rel="stylesheet">

这只是一个非常基本的例子,如果您有大量资产要在页眉或页脚中调用,我建议创建一个基于配置文件加载的帮助程序,您还可以指定某些页面上需要的内容加载这种方式,所以它动态加载foreach。

另外要小心,调用Assets(大写字母)vs资产(没有大写字母)是非常不同的,许多网络服务器都区分大小写......

我为我的htaccess文件运行以下命令:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>