Codeigniter从URL中删除/index.php

时间:2014-02-04 15:28:48

标签: php .htaccess codeigniter

好的,所以我知道很多人一直在问相同或类似的问题,但我似乎找不到适合我项目的解决方案。所以请不要将其作为副本。

我有一个用codeigniter制作的网站。如果没有url中的index.php,它运行得很好。所以重写是成功的。直到几天前:管理区域(/ admin)突然返回404并且只能通过路径'/index.php/admin'访问。曾经工作过的重写代码不再有用了。

知道我回来了 - > 问题是我无法从我的网址中删除index.php。

我尝试了很多我不知道该怎么做的事情。

该应用程序存储在'public_html / application / ...下 下面的图像位于.htaccess文件和index.php所在的应用程序文件夹中。 这是改变.htaccess的正确位置吗?

enter image description here

我尝试重写.htaccess但没有成功:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 

RewriteEngine on
RewriteCond $1 !^(index\.php|public|\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^CI/(index\.php|public|images|robots\.txt|css)
RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots|css\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

我的配置文件:

$config['base_url'] = 'http://www.mysite.be/';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';

routes.php文件:

$route['default_controller'] = "c_home/index";
$route['404_override'] = '';
$route['admin'] = "c_home/adminpanel";
$route['logout'] = "c_login/logout";

是否有人知道发生了什么或如何解决这个问题?

提前致谢!

5 个答案:

答案 0 :(得分:1)

.htaccess应位于public_html目录中 - 即:从当前位置向上一级。 index.php大概已经在public_html中了 索引。*你在图片中是index.html - 应该是。 如果.htaccess符合上述条件,那么这个.htaccess代码将起作用:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]  

答案 1 :(得分:1)

所以我一直在搞乱这个并最终使它发挥作用

为此,我对htaccess和控制器进行了更改 我将管理功能更改为新控制器并在routes.php

中更改了此功能

新路由

$route['admin'] = "c_login/index";

new .htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 

答案 2 :(得分:0)

尝试设置

$config['uri_protocol'] = 'PATH_INFO'

并设置

$config['enable_query_strings'] = FALSE;

答案 3 :(得分:0)

如果我们需要在codeigniter中从url中删除/index.php 比

应用/配置/ config.php中

  $config['index_page'] = '';

  $config['uri_protocol'] = 'REQUEST_URI';

在项目的根目录

中添加.htaccess文件
RewriteEngine on
RewriteBase /[Your project folder name]/
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

现在你可以访问

http://example.com/controller/method

愿它对你有所帮助

答案 4 :(得分:-1)

我不知道你对所有代码做了什么,但我把它放在我的.htaccess文件中:

RewriteRule ^(.*)$ /index.php?/$1 [L]

繁荣。