【发布时间】:2019-06-10 09:08:49
【问题描述】:
当我使用 url as 时
mysite.com/index.php/user/user 方法正在被调用。
但是当我在routes.php 中添加以下行以便我可以使用自定义 url 访问该函数时。
它给我带来了错误。 404 Not Found
我想使用 url 作为mysite.com/user 访问方法
$route['user']['get'] = 'user/user';
user.php 存在于控制器目录中
<?php
use Restserver\Libraries\REST_Controller;
defined('BASEPATH') OR exit('No direct script access allowed');
require APPPATH . 'libraries/REST_Controller.php';
require APPPATH . 'libraries/Format.php';
class User extends REST_Controller {
function __construct()
{
// Construct the parent class
parent::__construct();
}
public function user_get(){
$this->set_response("request recieved", REST_Controller::HTTP_OK); // OK (200) being the HTTP response code
}
}
[第二个问题]
如何创建路由来访问控制器目录中某些文件夹中存在的控制器。
假设控制器文件存在于controllers/api/v1/ 目录中,文件名为user.php
注意: 我已经尝试了用户在其他帖子中提供的所有解决方案,但问题没有得到解决。
编辑:问题已解决
路由现在工作得很好。我认为问题是,我打电话给 mysite.com/user ,而不是我应该打电话给 mysite.com/index.php/user
也解决了 index.php 在 url 中的第二个问题。
我正在对 .htaccess 文件中的 Application 文件夹中的文件进行更改。
我在root folder 中创建了一个.htaccess 文件,然后添加了下面提到的代码行
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
【问题讨论】:
-
是
User.php在名为user的子文件夹中,即controllers/user/Users.php?您是否尝试通过 get 请求访问user? -
没有。
User.php文件位于controllers文件夹内,即controllers/User.php。是的,我正在尝试使用获取请求进行访问。 -
1) 您是要从 URL 中删除
index.php,还是要添加路由?你还没有给我们看the.htaccessupdate required to get rid ofindex.php。一次做一件事。 2) 我认为 CodeIgniter 曾经支持在控制器方法名称中使用动词,但是 it is not mentioned in the docs anymore - 您是否尝试过仅使用user()作为您的方法名称? -
3) 如果您仍然遇到问题,从简单的开始 - 摆脱
REST_Controller.php,摆脱Format.php,删除什么都不做的__construct(),让您的方法只返回一些纯文本... -
我尝试使用名为 user() 的函数,但它没有被 get 请求调用,我正在尝试从 url 中删除 index.php 并添加自定义路由。
标签: php codeigniter routes codeigniter-3