我以前从未使用过CodeIgniter,更不用说任何php框架了,我想我可以试试看。一切正常,除了我似乎无法从URL中删除index.php并仍然访问我的页面。
我从未使用过MVC结构,因此我正在学习中,如果做错了,请原谅我。
我试图通过简单地键入 localhost / ci / about* 来访问我创建的名为“ about_page.php”的视图 , 但是目前我只能使用 localhost / ci / index.php / about 来访问它。 *
该页面的控制器为: /application/controllers/about.php 该页面的模型为: /application/models/about_model.php ,该页面的视图为: /application/views/about_page.php
CodeIgniter在“应用程序”文件夹中随附一个.htaccess文件,该文件仅包含Allow Deny From All。因此,我在根目录中创建了一个新的.htaccess文件,http://localhost/ci/.htaccess并在其中添加了以下代码:
Allow Deny From All
http://localhost/ci/.htaccess
RewriteEngine On RewriteBase /ci RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
当.htaccess文件位于根目录中时,出现500内部服务器错误。当我将完全相同的文件复制到应用程序文件夹中时,500错误消失了,但是我仍然无法通过使用 localhost / ci / about* 访问about页面 *
我已经更改$config['index_page'] = 'index.php';为$config['index_page'] = '';AND,并且尝试更改$config['uri_protocol'] = 'AUTO';为,$config['uri_protocol'] = 'REQUEST_URI';但是仍然出现内部服务器错误。
$config['index_page'] = 'index.php';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
$config['uri_protocol'] = 'REQUEST_URI';
我进入httpd.conf文件,并取消注释了mod_rewrite.so模块,因此我知道mod_rewrite是活动的。
有谁知道为什么这行不通或者我如何获得这项工作?我知道关于StackOverflow的这个问题有很多问题,但是我找不到能回答我问题的问题。
我这样做对吗?我是否应该能够通过访问 localhost / ci / about 来访问about页面,还是必须在“ application”目录中创建“ about”目录?
有3个步骤要删除index.php。
index.php
在application/config.php文件中进行以下更改
application/config.php
$config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/Your Ci folder_name';
$config[‘index_page’] = ‘’; $config[‘uri_protocol’] = ‘AUTO’;
请.htaccess使用下面的代码文件的根目录
.htaccess
RewriteEngine on
RewriteCond $1 !^(index.php|resources|robots.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA]
启用重写引擎(如果尚未启用)
一世。 首先,使用以下命令启动它:
a2enmod rewrite
ii。 编辑档案/etc/apache2/sites-enabled/000-default
/etc/apache2/sites-enabled/000-default
全部更改AllowOverride None为AllowOverride All。
AllowOverride None
AllowOverride All
注意:在最新版本中,您需要更改/etc/apache2/apache2.conf文件
/etc/apache2/apache2.conf
iii。 使用以下命令重新启动服务器:
sudo /etc/init.d/apache2 restart