Php Codeigniter-在此服务器上找不到请求的URL

Php Codeigniter-在此服务器上找不到请求的URL,php,codeigniter,codeigniter-url,Php,Codeigniter,Codeigniter Url,在过去的几天里,我的挫败感达到了新的高度。我试图在codeigniter中做一个简单的登录系统,但我无法让它正常工作 提交登录表单时,我收到以下错误: 在此服务器上找不到请求的URL/wishlist/login\u controller/login 表格如下: <form method="post" action="<?php echo base_url()?>login_controller/login"> <input type="text"placehold

在过去的几天里,我的挫败感达到了新的高度。我试图在codeigniter中做一个简单的登录系统,但我无法让它正常工作

提交登录表单时,我收到以下错误:

在此服务器上找不到请求的URL/wishlist/login\u controller/login

表格如下:

<form method="post" action="<?php echo base_url()?>login_controller/login">
<input type="text"placeholder="E-mail" id="email" name="email">
<input type="password" placeholder="Password" id="password" name="password">
<input class="btn btn-primary span2" type="submit" id="sign-in" value="Sign In">
</form>
我正在本地主机上使用wampserver。以下是它尝试访问的url: localhost/wishlist/login\u controller/login

我假设base_url之后的第一部分是控制器,第二部分是该控制器中的函数,对吗

config文件夹中的一些设置

$config['base_url'] = '';
$config['index_page'] = 'index.php';
$route['default_controller'] = "site_controller";

请从中重命名控制器

class Login extends CI_Controller {

那你就可以了

<form method="post" action="<?php echo site_url('login_controller/login'); ?>">
<input type="text"placeholder="E-mail" id="email" name="email">
<input type="password" placeholder="Password" id="password" name="password">
<input class="btn btn-primary span2" type="submit" id="sign-in" value="Sign In">
</form>
和htacees:

RewriteEngine On
RewriteBase /wishlist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /wishlist/index.php/$1 [L]
如果第行没有足够的switch config.php文件:

| URI PROTOCOL
|--------------------------------------------------------------------------
|
| This item determines which server global should be used to retrieve the
| URI string.  The default setting of 'AUTO' works for most servers.
| If your links do not seem to work, try one of the other delicious flavors:
|
| 'AUTO'            Default - auto detects
| 'PATH_INFO'       Uses the PATH_INFO
| 'QUERY_STRING'    Uses the QUERY_STRING
| 'REQUEST_URI'     Uses the REQUEST_URI
| 'ORIG_PATH_INFO'  Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';

我使用AUTO可能您需要查询字符串或请求URI选项

请从重命名控制器

class Login extends CI_Controller {

那你就可以了

<form method="post" action="<?php echo site_url('login_controller/login'); ?>">
<input type="text"placeholder="E-mail" id="email" name="email">
<input type="password" placeholder="Password" id="password" name="password">
<input class="btn btn-primary span2" type="submit" id="sign-in" value="Sign In">
</form>
和htacees:

RewriteEngine On
RewriteBase /wishlist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /wishlist/index.php/$1 [L]
如果第行没有足够的switch config.php文件:

| URI PROTOCOL
|--------------------------------------------------------------------------
|
| This item determines which server global should be used to retrieve the
| URI string.  The default setting of 'AUTO' works for most servers.
| If your links do not seem to work, try one of the other delicious flavors:
|
| 'AUTO'            Default - auto detects
| 'PATH_INFO'       Uses the PATH_INFO
| 'QUERY_STRING'    Uses the QUERY_STRING
| 'REQUEST_URI'     Uses the REQUEST_URI
| 'ORIG_PATH_INFO'  Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';

我使用AUTO可能您需要查询字符串或请求URI选项

将您的登录方法更改为类似于user\u login的方法,因为如果您未将该方法用作构造函数,则使用相同的名称作为类和方法是不正确的

尝试像这样访问您的url

http://localhost/wishlist/index.php/login/user_login
由于您没有更改任何stting,也没有添加htaccess文件,所以您的代码应该可以正常访问,因此Codeigenter具有访问url的模式,如

http://localhost/folder_name/index.php/controller_name/method_name

而且您的访问URL似乎不正确。

将您的登录方法更改为类似于user\u login的方法,因为如果您没有将该方法用作构造函数,则使用相同的名称作为类和方法是不正确的

尝试像这样访问您的url

http://localhost/wishlist/index.php/login/user_login
由于您没有更改任何stting,也没有添加htaccess文件,所以您的代码应该可以正常访问,因此Codeigenter具有访问url的模式,如

http://localhost/folder_name/index.php/controller_name/method_name
而且您的访问URL似乎不正确。

当控制器的名称为login和method login时,您调用action=login\u controller/login>

你需要打电话 基本url“登录/登录”; 当然,在config.php中设置base_url,就可以设置索引页面

也许您没有.htaccess,那么您需要调用mysite.com/index.php/login/login/

当控制器的名称为login和method login时,您可以调用action=login\u controller/login>

你需要打电话 基本url“登录/登录”; 当然,在config.php中设置base_url,就可以设置索引页面


可能您没有.htaccess,那么您需要调用mysite.com/index.php/login/login/

您同时遇到两个问题:

您的表单指向“login\u controller”,而您的控制器称为“login”,这已得到回答

方法的命名方式不能与控制器的命名方式相同

除非您的类位于名称空间中,否则使用这种方法,但CodeIgniter作为类构造函数执行时就不是这样了


您同时有两个问题:

您的表单指向“login\u controller”,而您的控制器称为“login”,这已得到回答

方法的命名方式不能与控制器的命名方式相同

除非您的类位于名称空间中,否则使用这种方法,但CodeIgniter作为类构造函数执行时就不是这样了


其他页面有用吗?您的.htaccess设置如何?默认控制器加载的视图工作正常。我根本没有编辑过我的.htaccess文件,所以它被设置为:Deny from all 404你得到的是Apache的,不是样式化的,什么都没有,还是看起来比CI的更好?这里,看起来像是CI的。如果是Apache的,那么问题在于服务器不是CI,即htaccess配置不正确,URL中缺少index.php等。我只能看到访问错误URL的问题,请查看下面的答案。其他页面是否有效?您的.htaccess设置如何?默认控制器加载的视图工作正常。我根本没有编辑过我的.htaccess文件,所以它被设置为:Deny from all 404你得到的是Apache的,不是样式化的,什么都没有,还是看起来比CI的更好?这里,看起来像是CI的。如果是Apache的,则问题在于服务器不是CI,即htaccess配置不正确,URL中缺少index.php等。我只能看到访问错误URL的问题,请查看下面的答案。@user927917您没有在配置文件中设置基本URL,我更新了答案,你能尝试一下吗请将我的配置文件中的base_url更新为:但我仍然无法获取请求的urlserver@user927917你应该检查你的htaccess并从你的配置文件中删除index.php。我将把它发布到答案检查中。尝试删除index.php文件并编辑.htaccess文件。还是不走运。我发现很难相信使用框架会如此复杂。到目前为止,我在CI上花费了大量的时间和精力,它将

使用普通php编写代码的速度更快了。@user927917这很奇怪,很抱歉我尝试了尽我所能来帮助您,很抱歉您仍然没有修复,但我认为如果您是CI新手,您只需保留一份干净的副本并遵循用户指南,就不会有任何问题,可能是主机或服务器的问题@user927917您没有在配置文件中设置基本url,我更新了答案,你能尝试一下吗请将我的配置文件中的base_url更新为:但我仍然无法获取请求的urlserver@user927917你应该检查你的htaccess并从你的配置文件中删除index.php。我将把它发布到答案检查中。尝试删除index.php文件并编辑.htaccess文件。还是不走运。我发现很难相信使用框架会如此复杂。到目前为止,我在CI上花费了大量的时间和精力,如果只使用普通的php编写代码,速度会更快。@user927917这很奇怪,我很抱歉我尝试了尽我所能帮助您,很抱歉您仍然没有修复,但是我认为如果你是CI的新手,你只需要保留一份干净的副本,并遵循用户指南,你不会有任何问题,可能是主机或服务器的问题;为什么?我总是使用这个,它是一样的,唯一不同的是:base\u url->这个函数返回与site\u url相同的内容,没有附加索引页或url后缀。嗯,听起来很奇怪,需要尝试你可以在这里阅读:xD@jadkik94当然,但很高兴知道,ever-Tough base_url不接受参数:P需要重新阅读文档,时间太多了,我不读了:/为什么?我总是使用这个,它是一样的,唯一不同的是:base\u url->这个函数返回与site\u url相同的内容,没有附加索引页或url后缀。嗯,听起来很奇怪,需要尝试你可以在这里阅读:xD@jadkik94当然,但很高兴知道,ever-Tough base_url不接受参数:P需要重新阅读文档,这是太多的时间,我不读:/有方法名称登录不是问题,它将被视为构造函数,是的,但这种方法将被称为两次,首先创建类,并且一旦方法使用URI路由调用,这不是问题吗?另外,如果您尝试这样做,至少最新的CodeIgniter版本将调用Login::index而不是Login::Login。已将控制器重命名为user_controller并保留登录函数的名称。这并不能解决问题:拥有方法名登录不是问题,它将被视为构造函数,是的,但是这个方法在创建类时会先被调用两次,并且使用URI例程调用一次方法,这不是问题吗?另外,如果您尝试这样做,至少最新的CodeIgniter版本将调用Login::index而不是Login::Login。已将控制器重命名为user_controller并保留登录函数的名称。这并没有解决问题:更改了一些内容:表单现在提交给base_urluser_controller/login,该控制器有一个加载主视图的索引函数。用户_控制器也通过routes.php文件加载。但是,问题仍然存在……:您最初的问题是否解决了,即访问url并在iTunes中显示表单。我最初的问题是仍然存在。得到相同的错误如果你没有对表单进行操作,它将被提交到相同的方法,你可以通过使其正常工作来测试它,将方法名称更改为除登录名以外的其他名称让我们假设方法名称为user\u login,然后尝试访问您的url并提交您的表单它将使用相同的方法提交更改了一些内容:表单现在提交给base\u urluser\u控制器/登录该控制器具有加载主视图的索引函数。用户_控制器也通过routes.php文件加载。但是,问题仍然存在……:您最初的问题是否解决了,即访问url并在iTunes中显示表单。我最初的问题是仍然存在。获取相同的错误如果您不对表单执行操作,它将被提交到相同的方法,您可以通过使其正常工作来测试它,将您的方法名称更改为除登录名以外的其他名称让我们假设您的方法名称为user\u login,然后尝试访问您的url,然后提交您的表单,它将使用相同的方法提交