我之前从未使用过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 - removing index.php
Codeigniter - how to remove the index.php from url?
http://www.farinspace.com/codeigniter-htaccess-file/
CodeIgniter在'application'文件夹中附带.htaccess文件,该文件仅包含 Allow Deny From All
. 所以我在根目录 http://localhost/ci/.htaccess
中创建了一个新的.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'] = '';
并且我尝试将 $config['uri_protocol'] = 'AUTO';
更改为 $config['uri_protocol'] = 'REQUEST_URI';
但我仍然收到内部服务器错误 .
我进入了httpd.conf文件并取消注释了mod_rewrite.so模块,因此我知道mod_rewrite处于活动状态 .
有没有人有任何想法为什么这不起作用或我怎么能得到这项工作?我知道StackOverflow上有很多关于这个主题的问题,但我找不到回答我问题的问题 .
我这样做了吗?我是否应该通过访问 localhost/ci/about 来访问about页面,或者我是否必须在'application'目录中创建'about'目录?
10 回答
删除
index.php
有3个步骤 .application/config.php
文件中进行以下更改.htaccess
文件i. 首先,使用以下命令启动它:
ii. 编辑文件
/etc/apache2/sites-enabled/000-default
将所有
AllowOverride None
更改为AllowOverride All
.注意:在最新版本中,您需要更改
/etc/apache2/apache2.conf
文件iii. 使用以下命令重新启动服务器:
你的
.htaccess
稍微偏了 . 看看我的:请注意两个地方的“codeigniter” .
在那之后,在你的配置中:
在适当的时候将codeigniter更改为“ci”
我正在使用这样的东西 - codeigniter-htaccess-file,这是一篇很好的文章 .
将.htaccess文件保留在CI根目录中
确保mod_rewrite已打开
检查拼写错误(即控制器文件/类名)
在/application/config/config.php中设置
$config['index_page'] = "";
在/application/config/routes.php中设置 your 默认控制器
$route['default_controller']="home";
如果您正在运行CI(2.1.3)的干净安装,那么实际上并没有太多错误 .
2个配置文件
控制器
.htaccess
mod_rewrite
读
Codeigniter .htaccess
redirect-index-php-in-codeigniter
这适合我
将 .htaccess 文件移动到根文件夹(在我的情况下位于应用程序文件夹之前)
我的config.php看起来像这样(application / config / config.php )
让我知道它是否适合你们!干杯!
如果不工作
改为
如果不工作改变它
如果使用这个
使用重定向或 Headers 位置到url不在htaccess中将无法正常工作你必须在htaccess中添加url才能工作
对于那些使用wamp服务器的用户,请按照@Raul Chipad解决方案的前两个步骤进行操作:
我在Linux Ubuntu 14上遇到了类似的问题 .
在浏览器中不断发出403错误消息并在此处阅读所有答案后,我无法弄清楚出了什么问题 .
然后我达到了apache的错误日志,最后得到了一个有点出乎意料但完全符合逻辑的提示 .
codeIgniter主文件夹对文件夹没有X权限,呈现Web服务器无法读取的所有内容 .
chmod ugo x yourCodeIgniterFolder
修复第一个问题 . 杀死403错误 .
但后来我开始收到错误500 .
罪魁祸首是.htaccess中的错误设置行
然后我开始得到php错误 .
Culprit与应用程序和系统文件夹中内部文件夹的“其他”权限的主文件夹无X标志相同 .
我对这个问题的两分钱:阅读Apache Error.log .
但是,也要注意安全问题 . CodeIgniter建议将应用程序和系统文件夹移出Web空间,因此如果这些文件夹保留在Web空间中,则应非常小心地更改权限 .
另一件值得一提的是我已将下载的CodeIgniter存档直接解压缩到网络空间 . 文件夹权限可能直接从存档创建 . 鉴于它们是安全的,但在CodeIgniter手册https://codeigniter.com/user_guide/installation/index.html中没有提到文件夹访问问题(在类似unix的系统上),并且可能会在那里提及如何放松CodeIgniter的安全性以便在保持 生产环境 系统安全性的同时工作(如前所述,手册中已经存在一些安全提示 .
只需在.htaccess文件中添加:
默认情况下,下面位于
application
文件夹中,将其像建议一样移动到根目录中 .leave the .htaccess file in CI root dir