我正在使用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
是有效的文件夹。
答案 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>