Проблема с контроллером Codeigniter по умолчанию на хостинге Godaddy linux

#php #codeigniter #csrf-protection

#php #codeigniter #csrf-защита

Вопрос:

Я использую хостинг Godaddy Linux и развернул на нем исходный код codeigniter. Он работает абсолютно нормально на localhost. Мое имя контроллера по умолчанию — «Добро пожаловать».

  1. Когда я пытаюсь войти в систему, нажав кнопку входа после ввода имени пользователя и пароля, без указания имени контроллера по умолчанию в URL, тогда появляется сообщение «Запрошенное вами действие запрещено». в некоторых местах это работает нормально. Вот как я пишу url ‘https://www.example.com

  2. Когда я пишу имя контроллера по умолчанию в URL, затем введите имя пользователя и пароль, а затем нажмите кнопку входа. все работает нормально. Вот как я пишу https://www.example.com/Welcome

  3. Когда я удаляю ‘www’ из base_url в файле конфигурации, он отлично работает в некоторых местах, но не работает в некоторых других местах. Вот мой конфигурационный файл

     $config['base_url'] = 'https://www.example.com/';
    
    $config['index_page'] = '';
    
    $config['uri_protocol'] = 'REQUEST_URI';
    
    $config['url_suffix'] = '';
    
    $config['language'] = 'english';
    
    $config['charset'] = 'UTF-8';
    
    $config['enable_hooks'] = FALSE;
    
    $config['subclass_prefix'] = 'MY_';
    
    $config['composer_autoload'] = FALSE;
    
    $config['permitted_uri_chars'] = 'a-z 0-9~%.:_-@';
    
    $config['enable_query_strings'] = FALSE;
    $config['controller_trigger'] = 'c';
    $config['function_trigger'] = 'm';
    $config['directory_trigger'] = 'd';
    
    $config['allow_get_array'] = TRUE;
    
    $config['log_threshold'] = 0;
    
    $config['log_path'] = '';
    
    $config['log_file_extension'] = '';
    
    $config['log_file_permissions'] = 0644;
    $config['log_date_format'] = 'Y-m-d H:i:s';
    $config['error_views_path'] = '';
    $config['cache_path'] = '';
    $config['cache_query_string'] = FALSE;
    $config['encryption_key'] = '';
    $config['sess_driver'] = 'files';
    $config['sess_cookie_name'] = 'ci_session';
    $config['sess_expiration'] = 7200;
    $config['sess_save_path'] = NULL;
    $config['sess_match_ip'] = FALSE;
    $config['sess_time_to_update'] = 300;
    $config['sess_regenerate_destroy'] = FALSE;
    
    $config['cookie_prefix']    = '';
    $config['cookie_domain']    = '';
    $config['cookie_path']      = '/';
    $config['cookie_secure']    = FALSE;
    $config['cookie_httponly']  = FALSE;
    
    $config['standardize_newlines'] = FALSE;
    
    $config['global_xss_filtering'] = FALSE;
    
    $config['csrf_protection'] = True;
    $config['csrf_token_name'] = 'csrf_snt_token';
    $config['csrf_cookie_name'] = 'csrf_cookie_snt';
    $config['csrf_expire'] = 7200;
    $config['csrf_regenerate'] = TRUE;
    $config['csrf_exclude_uris'] = array();
    
    
    $config['compress_output'] = FALSE;
    
    
    $config['time_reference'] = 'local';
    
    
    $config['rewrite_short_tags'] = FALSE;
    
    $config['proxy_ips'] = '';   
      

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

Комментарии:

1. Вам нужно посмотреть область / файл маршрутов, который определяет, как пользователи перемещаются по вашему приложению

2. в файле маршрута нет ничего, кроме имени контроллера по умолчанию

3. я думаю, что проблема связана с файлом .htaccess. вам нужно написать правила перезаписи и условия перезаписи.

Ответ №1:

используйте код htaccess, который указан в URL-адресе CI_Docs