找不到对象! codeigniter 项目中的错误 404
Posted
技术标签:
【中文标题】找不到对象! codeigniter 项目中的错误 404【英文标题】:Object not found! Error 404 in codeigniter project 【发布时间】:2015-07-19 20:59:11 【问题描述】:我看到其他用户提出了类似的问题,但没有一个对我有用。我有一个 CodeIgniter 项目,它在我的本地主机中运行得非常好。我创建了虚拟主机,以便可以托管许多项目。我确实得到了网站的第一页(登录页面),但是在登录系统时,我得到了下面显示的错误,而不是下一个有效页面。
找不到对象!在此服务器上找不到请求的 URL。这 引用页面上的链接似乎是错误的或过时的。请 通知该页面的作者该错误。如果你认为这是一个 服务器错误,请联系站长。错误 404 127.0.0.1 Apache/2.4.10 (Win32) OpenSSL/1.0.1i php/5.6.3
这是来自www/site/log.../
的错误日志
[Sat May 09 01:10:30.703354 2015] [core:error] [pid 5060:tid 1680] [client 127.0.0.1:57053] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
[Sat May 09 01:10:30.703354 2015] [core:error] [pid 5060:tid 1680] [client 127.0.0.1:57053] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
[Sat May 09 01:10:30.703354 2015] [core:error] [pid 5060:tid 1680] [client 127.0.0.1:57058] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
[Sat May 09 01:10:30.703354 2015] [core:error] [pid 5060:tid 1680] [client 127.0.0.1:57058] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
还有我的 .htaccess 文件
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /accounting/
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
我的虚拟主机设置:
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/www/saseco"
ServerName saseco.dev
ServerAlias www.saseco.dev
CustomLog "C:/www/saseco/logs/saseco.local.access.log" combined
ErrorLog "C:/www/saseco/logs/saseco.local.error.log"
<Directory "C:/www/saseco">
AllowOverride All
Require all Granted
</Directory>
</VirtualHost>
我的登录控制器的部分 sn-p:
function user_login()
if(isset($_POST['enter'])) //Login button pressed
$data = $_POST;
$check = $this->login_model->login_match($data);
谁能告诉我哪里出错了?
【问题讨论】:
产生此错误的 URL 是什么? 这是登录页面的url。http://www.saseco.dev/
,点击登录按钮后生成的url为http://127.0.0.1/saseco/login/user_login
@TimBrownlaw
为什么你的RewriteRule
被注释掉了?
我试图检查错误是否由于任何这些规则而出现,所以我在@Mike Rockett 在这里发帖时发表了评论并忘记取消评论
我也这么想 - 只是想确定一下。
【参考方案1】:
好的,所以在您没有向我们展示的代码中 - 您需要在创建 http://127.0.0.1/saseco/login/user_login
的位置更改它并使其生成 http://www.saseco.dev/login/user_login
因为根据您的虚拟主机设置,这是两个非常不同的位置。
所以你需要像<?php echo base_url('login/user_login');?>
这样的东西
并确保在 /application/config/config.php 中正确配置了 $config['base_url'] 。
试试
$config['base_url'] = '';
或将其硬编码为
$config['base_url'] = 'http://www.saseco.dev/';
补充: 不知道您为什么将 RewriteBase 设置为会计,所以请尝试更改
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /accounting/
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
#RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
到
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
#RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
【讨论】:
感谢@TimBrownlaw,将之前设置为http://127.0.0.1/saseco/'
的基本网址更改为您建议的网址。但这并没有解决问题
所以如果你在浏览器中输入saseco.dev/login 就无法获取页面?如果不是 - 那么 http://www.saseco.dev/index.php/login/
http://saseco.dev/login
导致Object Not found error
,http://www.saseco.dev/index.php/login/
显示登录页面,但是当单击登录按钮时,它给了我Object not found error
@TimBrownlaw
你为什么有 RewriteBase /accounting/ ?只需将它作为 RewriteBase / 看看它对你有什么作用!
我在不知不觉中复制了另一个项目的 .htaccess 文件,对于 saseco,RewriteBase
设置为 RewriteBase /
【参考方案2】:
<?
?>
试试这个:
<?php
?>
它对我有用。
【讨论】:
以上是关于找不到对象! codeigniter 项目中的错误 404的主要内容,如果未能解决你的问题,请参考以下文章