我正在探索codeigniter。在应用程序启动时,默认控制器更改为加载我的控制器。
控制器正确加载视图,这很好,所以我猜路由按预期工作,但是当我使用(在同一控制器上的地址栏上手动键入其他方法)相同的 url 模式 /controller/method 我得到 404 错误,要么视图存在。
是否必须更改某些默认路由行为或其他问题?
谢谢
我正在探索codeigniter。在应用程序启动时,默认控制器更改为加载我的控制器。
控制器正确加载视图,这很好,所以我猜路由按预期工作,但是当我使用(在同一控制器上的地址栏上手动键入其他方法)相同的 url 模式 /controller/method 我得到 404 错误,要么视图存在。
是否必须更改某些默认路由行为或其他问题?
谢谢
我不知道您是否已经从您的 url 模式中删除了 index.php,假设您应该在浏览器地址字段中输入这种情况index.php/controller/method
。(如果您按照描述手动输入 url)
另一方面,如果您不想在每个链接上使用 index.php,您可以考虑删除它,更多信息在这里。
这可能是因为上面提到的index.php文件,或者如果您想摆脱 index.php,请在您的应用程序中包含 .htaccess 文件。
config/config.php - modifiy
$config['base_url'] = 'index.php'
$config['base_url'] = '' // set it to blank
对于 .htaccess 文件,请参阅以下代码
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
按照这个
根文件夹/.htaccess
index.php
在 url中删除
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
设置基本网址
root_folder/application/config/config.php
| to $_SERVER['SERVER_ADDR'] if available, or localhost otherwise.
| The auto-detection mechanism exists only for convenience during
| development and MUST NOT be used in production!
|
| If you need to allow multiple domains, remember that this file is still
| a PHP script and you can easily do that on your own.
|
*/
$config['base_url'] = 'http://[::1]/my-project/';
在 url 中删除
index.php
,即使在请求中以表单形式发布root_folder/application/config/config.php
/*
|--------------------------------------------------------------------------
| Index File
|--------------------------------------------------------------------------
|
| Typically this will be your index.php file, unless you've renamed it to
| something else. If you are using mod_rewrite to remove the page set this
| variable so that it is blank.
|
*/
$config['index_page'] = '';
s et 默认控制器,我的是“家”
root_folder/application/config/routes.php
| controller and method URI segments.
|
| Examples: my-controller/index -> my_controller/index
| my-controller/my-method -> my_controller/my_method
*/
$route['default_controller'] = 'home';
之后,确保所有控制器文件名都是大写的。 也是一个类名。
当您需要在实时服务器中上传时,这也很重要。
root_folder/application/controllers/Home.php
<?php
/**
*
*
* @author Lloric Garcia <emorickfighter@gmail.com>
*/
defined('BASEPATH') OR exit('No direct script access allowed');
class Home extends MY_Controller {
public function index() {
}
}
那么这将是你的网址
http://[::1]/my-project/home
即使在实时服务器中也是我的设置
这一切都来自