codeigniter 3.1.9 с apache и php 7.2 - проблемы маршрутизации/перенаправления с символическими ссылками

SCENERIO: Недавно я перенес CodeIgniter с 2.4 на 3.1.9 вместе с PHP с 5.2 на 7.2. Также создал новый файл httpd.conf в apache. Когда я перехожу по URL-адресу сайта, он нормально загружает страницу по умолчанию, и я могу без проблем просматривать страницы по умолчанию или корневые страницы. Существует несколько поддоменов, которые отображаются в route.php в основной корневой каталог httpd /var/www/html. Эти поддомены имеют символическую ссылку на /var/www/html, а в папке с ресурсами находятся файлы настройки для каждого поддомена.

Root HTTPD directory "/var/www/html" structure

application assets
test1 -> /var/www/html    
test2 -> /var/www/html
index.php
system

URL задается следующим образом в config.php.

$config['base_url'] = 'https://example.com/';

Ниже моя запись в route.php:

$route['default_controller'] = "home";
$route['404_override'] = '';

$route['home'] = "home";
$route['select-product'] = "home/select-product";
$route['test1/select-product'] = "home/select-product";
$route['test2/select-product'] = "home/select-product";

Пожалуйста, проверьте приведенное ниже изображение для конфигурации каталога httpd:

введите здесь описание изображения

ПРОБЛЕМА: когда я открываю страницу https://example.com/, все загружается правильно . Когда я перехожу на https://example.com/test1 ==> первая страница загружается правильно. Но когда я нажимаю «Далее», вторая страница по умолчанию возвращается к «https://example.com/';. Каким-то образом он теряет /test1 из браузера.

Не уверен, что это вызвано проблемой маршрутизации URL-адресов CodeIgniter или чем-то связанным с файлом httpd.conf Apache. Тот же файл «routes.php» нормально работал на старом сервере.

Маршрутизация/нумерация страниц, кажется, сломалась после того, как я установил $config['base_url'] = 'https://example.com/< /а>';. Если оставить поле пустым, для загрузки сайта требуется некоторое время, а когда это происходит, формы и изображения загружаются неправильно.

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

Спасибо.


person BBT    schedule 03.07.2018    source источник
comment
Привет всем, То, что я обнаружил, может дать нам некоторые подсказки в отношении того, что происходит... Итак, когда я просматриваю веб-страницу, используя частный IP-адрес, все работает нормально. Когда он загружается с общедоступным IP-адресом, домашняя страница загружается, но URL-адрес на следующей странице меняется на частный IP-адрес, и страница не загружается. Такое поведение наблюдается, когда $config['base_url'] = ''; остается пустым и $config['uri_protocol'] = 'ЛЮБОЙ ВАРИАНТ РАБОТАЕТ';   -  person BBT    schedule 05.07.2018


Ответы (1)


У меня была эта проблема, когда я обновился до PHP 7.2, лучшее решение,

для работы в CI с PHP7.2,

  1. Найдите и закомментируйте (или удалите) следующий код из session.php (system/libraries/session/session.php) и поместите его в свой index.php вверху.

    session_start(); 
    ini_set('session.use_trans_sid', 0); 
    ini_set('session.use_strict_mode', 1); 
    ini_set('session.use_cookies', 1); 
    ini_set('session.use_only_cookies', 1); 
    ini_set('session.hash_function', 1); ini_set('session.hash_bits_per_character',4);
    
  2. а для .htaccess используйте это

    DirectoryIndex index.php
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php|.well-known|images|robots\.txt)
    RewriteRule ^(.*)$ index.php?/$1
    
  3. установите для протокола uri значение AUTO

    $config['uri_protocol'] = 'AUTO';
    $config['index_page'] = '';
    
person Cosmo Arun    schedule 24.02.2019