无法从 Ubuntu 的 Codeigniter 中删除 index.php

Cannot remove index.php from Codeigniter for Ubuntu

我关注的最后一个在这里How to remove index.php from codeigniter in UBUNTU [duplicate]

我有一个这样的控制器:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Login extends CI_Controller {

    public function index()
    {
        $this->load->view('login.html');
    }
}

当我通过此 URL 访问它时:http://localhost/homerent/Login,我得到 404 未找到。

我从上面的回答中参考 link

  1. $config['index_page'] = '';
  2. 重启apache2服务:sudo /etc/init.d/apache2 reload
  3. 将以下代码添加到/var/www/html/my_ci_site/.htaccess

    RewriteEngine on
    RewriteBase /
    RewriteCond  !^(index\.php|static|robots\.txt|favicon\.ico|uploads|googlexxxxxxxx\.html|mobile.html)
    RewriteRule ^(.*)$ index.php/ [L]
    
  4. 在/etc/apache2/apache2.conf

  5. 中将AllowOverride None的每个实例替换为AllowOverride All
  6. 启用重写模式:sudo a2enmod rewrite
  7. 最后再次重启apache2服务。

毕竟,我再次访问我的 url http://localhost/homerent/Login 我仍然得到 404 未找到。

我不知道这有什么问题。

在Ubuntu 你必须做虚拟主机才能工作。 为此,首先在 /etc/apache2/sites-available 中创建 yourproject.conf 文件(可能您可能需要 root 权限使用 sudo 命令)

为此在终端

 cd /etc/apache2/sites-available

然后

sudo nano yourproject.conf

复制以下内容并粘贴进去

<VirtualHost *:3434>
      ServerName  localhost

      DirectoryIndex index.php
      DocumentRoot /var/www/html/yourprojectfolder

      <Directory "/var/www/html/yourprojectfolder">
      Options All
      AllowOverride All
      Allow from all
      </Directory>

</VirtualHost>

注意:您可以在此处使用不同的端口

然后运行

sudo nano /etc/apache2/ports.conf

在此文件中添加行(不要编辑现有端口)

Listen 3434

然后运行

sudo a2ensite yourproject.conf sudo a2enmod rewrite

config.php

$config['base_url'] = 'http://localhost:3434';
$config['uri_protocol']    = 'REQUEST_URI';
$config['index_page'] = '';

yourproject 文件夹中创建 .htaccess,内容如下

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

然后重启apache使修改生效

现在您可以通过 url http://localhost:3434 访问您的站点(这将加载默认控制器)并且无需在 url[=26= 中添加项目文件夹]

例如 http://localhost/homerent/Login 是现在使用的 url 和 设置虚拟主机后 您可以使用 http://localhost:3434/Login