【发布时间】:2017-07-06 03:03:24
【问题描述】:
所以我已经把我的网站上线了,只有我的登录页面 (Home_controller) 可以正常工作,但任何其他页面都无法正常工作。
http://www.my-websiteabc.net/ 工作正常,但 http://www.my-websiteabc.net/About_cookies 不行
http://www.my-websiteabc.net/Home_controller 和 http://www.my-websiteabc.net/home_controller 也不起作用。
我花了一整天的时间阅读不同的建议和解决方法,但无法让它发挥作用。
到目前为止我已经尝试过:
1.我的控制器文件名和类有一个第一个大写字符。例如:
- About_cookies.php
- About_cookies 类扩展 CI_Controller
- 查看:cookies.php
2.我的文件夹结构是:
/.
/my-websiteabc
/my-websiteabc/application
/my-websiteabc/js
/my-websiteabc/css
/my-websiteabc/system
3.我在根文件夹中有.htaccess包含:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>
4.我还尝试在应用程序文件夹中使用/不使用此 .htaccess:
<IfModule authz_core_module>
Require all denied
</IfModule>
<IfModule !authz_core_module>
Deny from all
</IfModule>
5.我的路由.php:
$route['default_controller'] = 'Home_controller';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
6.和config.php:
$config['base_url'] = 'http://www.my-websiteabc.net/';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
我在尝试除http://www.my-websiteabc.net/ 之外的任何其他内容时得到File not found.,但在此页面上所有图像和 CSS 都是正确的,所以我猜我的路径是正确的。
使用 CI 3.1.5 和 PHP 7.1.6
05/07 更新:
控制器定义(About_cookies.php):
<?php
class About_cookies extends CI_Controller {
public function __construct() {
parent::__construct();
$ci =& get_instance();
if ($ci->session->userdata('site_lang')) {
$siteLang = $ci->session->userdata('site_lang');
} else {
$siteLang = 'english';
$this->session->set_userdata('site_lang', $siteLang);
}
$ci->lang->load('home',$siteLang);
}
public function index(){
$data['main_content'] = 'cookies';
$this->load->view('templates/default',$data);
}
}
我的浏览器尝试访问的 URL:
http://www.my-websiteabc.net/About_cookies
我的看法:cookies.php
【问题讨论】:
-
加载
http://www.my-websiteabc.net/index.php/About_cookies时会发生什么? -
在你的 routes.php 上尝试小写
$route['default_controller'] = 'home_controller';确保你的文件和类名和类名只有第一个大写字母。 -
请贴出 Home_controller.php 文件的代码。至少是类声明。
-
http://www.my-websiteabc.net/index.php/About_cookies工作正常!我检查了我的网络托管服务提供商并且 mod_rewrite 应该可用。无法弄清楚为什么如果没有 URL 中的 index.php,它就无法工作 -
那么你的 .htaccess 是错误的。我会发布我的。 CodeIgniter 默认就是这样工作的。当您不指定要加载哪个控制器时,您的情况是特殊情况,因此它默认为配置文件中指定的控制器(
default_controller)。
标签: php .htaccess codeigniter