Codeigniter从URL中删除/index.php

Codeigniter从URL中删除/index.php,php,.htaccess,codeigniter,Php,.htaccess,Codeigniter,好吧,我知道很多人都在问相同或类似的问题,但我似乎没有找到适合我项目的解决方案。所以请不要把它当作复制品 我有一个网站与codeigniter。url中没有index.php,它运行得很好。所以重写成功了。直到几天前:管理区域(/admin)突然返回404,并且只能通过路径“/index.php/admin”访问。曾经工作过的重写代码不再起作用了 要知道我又回到了起点->问题是我无法从我的url中删除index.php。 我尝试了太多的事情,我不知道该怎么办了 应用程序存储在“public_ht

好吧,我知道很多人都在问相同或类似的问题,但我似乎没有找到适合我项目的解决方案。所以请不要把它当作复制品

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

要知道我又回到了起点->问题是我无法从我的url中删除index.php。

我尝试了太多的事情,我不知道该怎么办了

应用程序存储在“public_html/application/”下。。。 下图位于.htaccess文件和index.php所在的应用程序文件夹内。 这是更改.htaccess的正确位置吗

我尝试重写.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";
有人知道发生了什么事或者如何解决吗


提前谢谢

我不知道你在用这些代码干什么,但我只是把它放在了我的.htaccess文件中:

RewriteRule ^(.*)$ /index.php?/$1 [L]
和动臂。

尝试设置

$config['uri_protocol'] = 'PATH_INFO'
设定

$config['enable_query_strings'] = FALSE;

htaccess应该位于public_html目录中——即:比当前位置高一级。 php可能已经在public_html中了 图片中的index.*是index.html——应该是这样的。 如果.htaccess位于上述正确位置,则此.htaccess代码将正常工作:

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

所以我一直在胡闹,终于成功了

为此,我对htaccess和控制器进行了更改。
我将admin函数更改为一个新的控制器,并在routes.php中对此进行了更改

新路由

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

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

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

application/config/config.php 在项目的根目录下添加.htaccess文件 现在你可以像


希望对您有帮助

这个解决方案对我也不起作用。和我试过的第四个街区差不多。我不知道在没有重新编写引擎或其他任何东西的情况下如何工作。我认为否决评论是不公平的,因为它不适用于您过于复杂的设置。安装一个空白CI并尝试它-您会发现它可以工作。我没有否决您的答案,其他人否决了:/what.htaccess?您的apache日志中有任何错误吗?为了以防万一,启用了双重检查mod rewrite。好的,这取得了一些进展,但还没有实现。我移动了.htaccess,现在每当我在url后面键入/admin时,我都会被重定向到主页。请尝试以下路径:$route['admin']=“c_home/adminpanel/index”;更具体地说,您最终选择了默认路线,因为您在admin上获得了404。我猜您正在尝试访问adminpanel控制器类的index函数,如果是这样,请尝试以下路径:$route['admin']=“c_home/adminpanel/index”;嗯,c_home是控制器,adminpanel是我试图获取的函数。在这种情况下,正确的路由是什么?如果我把$route['default\u controller']=“c\u home/adminpanel”;然后路由工作,如果我只键入url,则显示管理区域。但是当我做$route['admin']=“c_home/adminpanel”;如果我在url中添加/admin,它不会做任何事情。
  $config['index_page'] = '';

  $config['uri_protocol'] = 'REQUEST_URI';
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]