маршрут не работает в CodeIgniter для других маршрутов, кроме дома - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь запустить CodeIgniter на локальном хосте под ОС Kubuntu.Для домашнего URL (http://localhost) он работает без проблем. Но когда я пытаюсь получить доступ к другому URL (http://localhost/cliente), он говорит: «Запрошенный URL / клиент не найден на этом сервере». *)1005 *

Мой файл .htaccess:

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

Файл rout.php:

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

$route['cliente'] = 'clientes';
$route['produto'] = 'produtos';

У меня есть файлы Clientes.php и Produtos.php в приложении /папка controllers.

В файле config.php: $ config ['index_page'] = '';

Самая необычная вещь - когда я вызываю контроллер приветствия, он работает. Только не работает, когдаЯ пытаюсь вызвать других контроллеров. Например, http://localhost/cliente.

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Я подозреваю, что есть проблема с вашим файлом .htaccess.это моя версия

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

надеюсь, это поможет, спасибо.

0 голосов
/ 04 января 2019

Работа с lamp в Linux немного отличается от xampp в Windows, вам нужно вручную включить несколько настроек.

Ваши правила перезаписи не будут работать, потому что mod_rewrite отключенпо умолчанию, и вы должны сначала включить его.

Шаг 1 - Включение mod_rewrite

Чтобы Apache понимал правила перезаписи, нам сначала нужно активировать mod_rewrite.Он уже установлен, но он отключен при установке Apache по умолчанию.Используйте команду a2enmod для включения модуля:

sudo a2enmod rewrite

Это активирует модуль или предупредит вас, что модуль уже включен.Чтобы эти изменения вступили в силу, перезапустите Apache.

sudo systemctl restart apache2

mod_rewrite теперь полностью включен.На следующем шаге мы настроим файл .htaccess, который мы будем использовать для определения правил перезаписи для перенаправлений.

Шаг 2 - Настройка .htaccess

* 1029Файл .htaccess позволяет нам изменять наши правила перезаписи, не обращаясь к файлам конфигурации сервера.По этой причине .htaccess имеет решающее значение для безопасности вашего веб-приложения.Точка, предшествующая имени файла, гарантирует, что файл скрыт.

По умолчанию Apache запрещает использовать файл .htaccess для применения правил перезаписи, поэтому сначала необходимо разрешить изменения в файле.Откройте файл конфигурации Apache по умолчанию, используя nano или ваш любимый текстовый редактор.

sudo nano /etc/apache2/sites-available/000-default.conf

Внутри этого файла вы найдете блок <VirtualHost *:80>, начинающийся с первой строки.Внутри этого блока добавьте следующий новый блок, чтобы ваш файл конфигурации выглядел следующим образом.Убедитесь, что все блоки имеют правильные отступы.

/etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
    <Directory /var/www/html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    . . .
</VirtualHost>

Сохраните и закройте файл.Чтобы эти изменения вступили в силу, перезапустите Apache.

sudo systemctl restart apache2

Теперь создайте файл .htaccess в корневом веб-каталоге.

sudo nano /var/www/html/.htaccess

Добавьте эту строку вверху новогофайл для активации механизма перезаписи.

/var/www/html/.htaccess
RewriteEngine on

Сохраните файл и выйдите.

Теперь у вас есть рабочий .htaccess файл, который вы можете использовать для управления правилами маршрутизации вашего веб-приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...