在 Mandriva 上的 CodeIgniter 中从 URL 中删除 index.php

Removing index.php from URL in CodeIgniter on Mandriva

我在 Windows OS 上开发了一个使用 CodeIgniter 的项目。该项目在 XAMPP (Windows) 和 Linux 托管服务器上运行良好(更新了服务器上的 .htaccess 即可运行)。我想将 Open Mandriva 用于开发目的。如果我 运行 控制器使用 index.php,它就可以工作。

我尝试了很多 .htaccess 规则示例、链接。但是控制器没有加载。

我试过:Cannot remove index.php from CodeIgniter URL, CodeIgniter removing index.php from urlthis external link,以及许多其他链接。

.htaccess 代码在 Windows 机器上

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

.htaccess 代码在 Linux 托管服务器

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

两者都没有在 Open Mandriva 上工作。

.htaccess 路径

/srv/www/html/ci/

页面给出:

404 error, and Object not found!

我项目的文件系统路径是

/srv/www/html/ci/application/controllers/ 

在浏览器上:

localhost/ci/branch 

如果我添加 index.php 就像

项目工作
localhost/ci/index.php/branch

跟http服务器配置有关系吗?我需要安装任何软件包吗?我还尝试了一些用于 apache 重写引擎的命令。但是我收到错误作为未知命令。

请尝试以下操作:

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

然后,在config.php

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

请确保您的 .htaccessindex.php 位于同一目录中。

检查重写引擎是否为enabled

如果没有,启用重写引擎并重启服务器。

sudo a2enmod rewrite
sudo service apache2 restart

转到

/etc/httpd/conf/httpd.conf - for Mandriva
/etc/apache2/apache2.conf  - for Ubuntu

AllowOverride None更改为AllowOverride All

代码块:

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All

重新启动 Apache(httpd) 服务。

config.php 或其他任何地方都不需要更改。

.htaccess 代码:

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