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

SCENERIO : Недавно я перенес CodeIgniter с 2.4 на 3.1.9 вместе с PHP с 5.2 на 7.2. Также создан новый файл httpd.conf в apache. Когда я захожу на URL сайта, он прекрасно загружает страницу по умолчанию, и я могу перейти к стандартному или корневому страницы без проблем. Есть несколько субдоменов, которые отображаются в файле rout.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/';

Ниже моя запись в rout.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. На старом сервере тот же файл "rout.php" работал нормально.

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

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

Спасибо.

1 Ответ

0 голосов
/ 24 февраля 2019

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

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

  1. Найдите и закомментируйте (или удалите) следующий код из sessions.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'] = '';
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...