Невозможно удалить index.php из Codeigniter для Ubuntu - PullRequest
0 голосов
/ 06 мая 2018

Последнее, за чем я следую, здесь Как удалить index.php из codeigniter в UBUNTU [дубликаты]

У меня есть один контроллер, который выглядит так:

<?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 не найден.

Я следую из ответа выше по референтной ссылке

  1. $ config ['index_page'] = '';
  2. перезапустите службу apache2: sudo /etc/init.d/apache2 reload
  3. Добавить код под /var/www/html/my_ci_site/.htaccess

    RewriteEngine on
    RewriteBase /
    RewriteCond $1 !^(index\.php|static|robots\.txt|favicon\.ico|uploads|googlexxxxxxxx\.html|mobile.html)
    RewriteRule ^(.*)$ index.php/$1 [L]
    
  4. Заменить каждый экземпляр AllowOverride None на AllowOverride All в /etc/apache2/apache2.conf

  5. Включить режим перезаписи: sudo a2enmod rewrite
  6. Наконец перезапустите сервис apache2.

В конце концов, я снова получаю доступ к своему URL http://localhost/homerent/Login Я все еще получаю 404. Не найдено.

Понятия не имею, что с этим не так.

1 Ответ

0 голосов
/ 21 августа 2018

В Ubuntu Вы должны сделать виртуальный хост для работы. Для этого сначала в /etc/apache2/sites-available создайте yourproject.conf файл (возможно, вам могут потребоваться права суперпользователя, используйте команду 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'] = '';

Создайте .htaccess внутри yourproject папки с содержимым ниже

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

Затем перезапустите apache, чтобы изменения вступили в силу

Теперь вы можете получить доступ к вашему сайту через URL http://localhost:3434 (Это загрузит контроллер defaulf), и нет необходимости добавлять папку проекта в URL

например http://localhost/homerent/Login - это URL, используемый сейчас и После настройки виртуального хоста Вы можете использовать http://localhost:3434/Login

...