我对Codeigniter有这个问题,不幸的是,本网站关于此问题的其他帖子对我没有帮助,或者我没有很好地应用它。
编辑*添加屏幕截图:
我的目录结构:
正如标题所说,当我输入
时http://mysite.com/folder/index.php
输出未找到的页面404。但是,当我输入 http://mysite.com/scheduler/index.php/BS 时,它显示“这是一个BS文件”,因为我使用下面的代码回应它。
BS.php
function index($flag = NULL)
{
echo "This is a BS File.";
}
routes.php文件
$route['default_controller'] = "BS";
$route['scaffolding_trigger'] = "";
的index.php
error_reporting(E_ALL);
$system_folder = "system";
$application_folder = "application";
if (strpos($system_folder, '/') === FALSE)
{
if (function_exists('realpath') AND @realpath(dirname(__FILE__)) !== FALSE)
{
$system_folder = realpath(dirname(__FILE__)).'/'.$system_folder;
}
}
else
{
// Swap directory separators to Unix style for consistency
$system_folder = str_replace("\\", "/", $system_folder);
}
define('EXT', '.php');
define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));
define('FCPATH', str_replace(SELF, '', __FILE__));
define('BASEPATH', $system_folder.'/');
if (is_dir($application_folder))
{
define('APPPATH', $application_folder.'/');
}
else
{
if ($application_folder == '')
{
$application_folder = 'application';
}
define('APPPATH', BASEPATH.$application_folder.'/');
}
require_once BASEPATH.'codeigniter/CodeIgniter'.EXT;
最后,我的 config.php
$config['base_url'] = "http://" . $_SERVER['HTTP_HOST']. "/scheduler/";
$config['secure_base_url'] = "https://" . $_SERVER['HTTP_HOST']. "/scheduler/";
$config['index_page'] = "index.php";
$config['uri_protocol'] = "REQUEST_URI";
现在这样做几天,仍然没有给出一个过程。很高兴得到任何帮助。
答案 0 :(得分:6)
我终于弄明白了怎么做, 如上所述,请记住目录结构?
在Controller文件夹中,我有这个BS.php文件。然后,如果我没有弄错,那就是文件的区分大小写。这可能是由于域名不支持文件名中的大写字母,我在本网站的其他问题的某些答案中读到了该字母。
简而言之,我将 BS.file 改为 bs.file 。它有效。
修改强>
此外,在 routes.php 中,我将BS更改为bs。
答案 1 :(得分:0)
我看到你发布了index.php的代码。我不认为你有需要,因为你应该尝试不在那里编辑任何东西。
你的根文件夹中有.htaccess吗?
每当我开发任何CI应用程序时,我总是保留这个.htaccess文件。
答案 2 :(得分:0)
您应该从index.php文件中删除代码,并在Web应用程序的根目录中创建.htaccess文件。 (即应用程序,系统文件夹存在)。
这是我的重复答案: Codeigniter issues with paths in localhost (XAMPP)
请在项目文件夹中创建.htaccess文件并写:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 index.php
</IfModule>
您无需在配置文件中的base_url中定义:
$config['base_url'] = ''; // blank it.
答案 3 :(得分:0)
就我而言,这是委托人的案件问题,但与@ Brain的答案略有不同。 这是因为我使用名为&#34; AxxxxBxxx.php&#34;的默认控制器。我总是遇到404错误。 在我将其更改为&#34; Axxxxbxxxx.php&#34;并更改相应的类名。 它有效。
BTW,我使用codeigniter 3.0。希望它有所帮助!