好的,所以我知道很多人一直在问相同或类似的问题,但我似乎找不到适合我项目的解决方案。所以请不要将其作为副本。
我有一个用codeigniter制作的网站。如果没有url中的index.php,它运行得很好。所以重写是成功的。直到几天前:管理区域(/ admin)突然返回404并且只能通过路径'/index.php/admin'访问。曾经工作过的重写代码不再有用了。
知道我回来了 - > 问题是我无法从我的网址中删除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";
是否有人知道发生了什么或如何解决这个问题?
提前致谢!
答案 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['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]
现在你可以访问
了http://example.com/controller/method
愿它对你有所帮助
答案 4 :(得分:-1)
我不知道你对所有代码做了什么,但我把它放在我的.htaccess文件中:
RewriteRule ^(.*)$ /index.php?/$1 [L]
繁荣。