codeigniter路由在默认var/www/html文件夹内的live server中没有index.php时无法工作

codeigniter路由在默认var/www/html文件夹内的live server中没有index.php时无法工作,php,apache,codeigniter,codeigniter-3,Php,Apache,Codeigniter,Codeigniter 3,Codeigniter路由在本地服务器中工作。当我部署到服务器的var/www/html时,路由没有按预期工作 当我在URL中的控制器名称之前添加index.php时,它可以正常工作 但如果没有index.php,它会抛出404页面未找到错误 .htaccess文件 我也试过这个 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /var/www/html/ RewriteRule ^index\.ph

Codeigniter路由在本地服务器中工作。当我部署到服务器的var/www/html时,路由没有按预期工作

当我在URL中的控制器名称之前添加index.php时,它可以正常工作

但如果没有index.php,它会抛出404页面未找到错误

.htaccess文件

我也试过这个

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /var/www/html/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>
但什么都不管用。

尝试以下解决方案:

转到application\config\config.php文件

改变

.htaccess

第一步

转到application/config/config.php 发现

步骤2

转到application/config/routes.php

在注释结束后删除页面底部的所有内容,并粘贴到下面的代码中

$route['default_controller'] = 'main'; // main is your default controller name
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['(:any)'] = "main/$1";
$route['admin'] = 'admin/login';
步骤3

在根文件夹中添加名为.htaccess的新文件,其中包含名为application和system等的文件夹

添加以下代码并打开网站

 RewriteEngine On
RewriteBase /
Options All -Indexes
RewriteCond %{REQUEST_METHOD} POST [NC]
RewriteRule ^ - [L]
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

# remove index.php
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$ [NC]
RewriteRule ^ %1 [L,R=301,NE]

# To externally redirect /dir/file.php to /dir/file
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]

# To internally forward /dir/file to /dir/file.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

Header set Access-Control-Allow-Origin "*"

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 

您的服务器似乎未启用mod_rewrite。 如果重写规则不起作用,请确保在Apache配置文件中允许.htaccess文件。目录部分应包含AllowOverride All选项:

<Directory "/var/www/html">
   Options Indexes FollowSymLinks
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>

不要忘记,对Apache配置文件的任何更改都需要重新启动服务

不工作。我试了所有的。有什么需要改变的吗?这个问题只发生在ubuntu服务器上。我可以知道你们控制器的url吗?表示您安装的位置CI@NithinM请核对我的答案
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /YourCIFolderName/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /YourCIFolderName/index.php [L]
</IfModule>
$config['index_page'] = 'index.php';
change it to
$config['index_page'] = '';
$route['default_controller'] = 'main'; // main is your default controller name
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['(:any)'] = "main/$1";
$route['admin'] = 'admin/login';
 RewriteEngine On
RewriteBase /
Options All -Indexes
RewriteCond %{REQUEST_METHOD} POST [NC]
RewriteRule ^ - [L]
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

# remove index.php
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$ [NC]
RewriteRule ^ %1 [L,R=301,NE]

# To externally redirect /dir/file.php to /dir/file
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]

# To internally forward /dir/file to /dir/file.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

Header set Access-Control-Allow-Origin "*"

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 
<Directory "/var/www/html">
   Options Indexes FollowSymLinks
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>