CodeIgniter, показывающий только контроллер по умолчанию
Я использованияконтактная в CodeIgniter в местных WAMP. Здесь код работает нормально. Но я загружаю в Cpanel (внутри example.com, имя папки вызов'mysite
'). Там я изменился как,
- db_name (config / database.в PHP)
- db_user_name (config / database.в PHP)
- db_password (конфигурация / база данных.в PHP)
- base_url as http://example.com/mysite (config / config.в PHP)
- uri_protocol как REQUEST_URI (config / config.в PHP)
, а также изменен .htaccess
(mysite/.откройте файл. htaccess), как,
<IfModule mod_rewrite.c>
RewriteEngine On
# Set the rewritebase to your CI installation folder
RewriteBase /mysite/
# Send everything to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L]
но не в mysite / application/.реврайт . Он пуст.
проблема в том, если я пойду http://example.com/mysite, он показывает страницу по умолчанию Как правильно. Но если я нажму любую ссылку (http://example.com/mysite/user/signin), он показывает ту же страницу по умолчанию. но URL-адрес изменяется.
помоги мне, Пожалуйста...
config.в PHP
$config['base_url'] = 'http://example.com/mysite';
$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['permitted_uri_chars'] = 'a-z 0-9~%.:_-';
$config['allow_get_array'] = TRUE;
$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
$config['directory_trigger'] = 'd';
$config['log_threshold'] = 0;
$config['log_path'] = '';
$config['log_date_format'] = 'Y-m-d H:i:s';
$config['cache_path'] = '';
$config['encryption_key'] = '***';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['cookie_prefix'] = "";
$config['cookie_domain'] = "";
$config['cookie_path'] = "/";
$config['cookie_secure'] = FALSE;
$config['global_xss_filtering'] = FALSE;
$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
$config['compress_output'] = FALSE;
$config['time_reference'] = 'local';
$config['rewrite_short_tags'] = FALSE;
$config['proxy_ips'] = '';
define('CSS_FOLDER' , 'application/assets/css');
define('DEFAULT_IMAGE_URL' , 'application/assets/images/default');
маршруты.в PHP
$route['default_controller'] = "welcome";
$route['404_override'] = '';
$route['user/(:any)'] = 'user/index';
15 ответов
$config['base_url'] = 'http://example.com/mysite/';
лучше :
$config['base_url'] = 'http://example.com/mysite';
попробуйте это :
RewriteBase /
RewriteEngine on
RewriteCond !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /mysite/index.php/ [L]
я столкнулся с той же проблемой ..его решено, когда я использую
$config['uri_protocol'] = 'AUTO';
в config.РНР. .попробуйте использовать AUTO и PATH_INFO для того же
убедитесь, что rewrite_module включен в apache
Если вы планируете использовать подпапку на сервере, сделайте то же самое на локальном WAMP. Таким образом, вы можете проверить его перед отправкой на сервер.
Я давно использовал CI, но я думаю, что вы должны добавить mysite/
в какой файл config.
посмотреть: установка приложения CodeIgniter в подпапку
.код htaccess
восстановить настройки по умолчанию в config.php, надеюсь, это поможет вам.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/ [PT,L]
CodeIgniter можно сказать, чтобы загрузить контроллер по умолчанию, когда URI нет, как будет в случае, когда запрашивается только корневой URL-адрес вашего сайта.Поэтому, как только замените свой стандартный conroller "добро пожаловать" на свой conrtoller в маршрутах.PHP , это может помочь вам
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
попробуйте этот htaccess:
RewriteEngine on
RewriteCond !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /mysite/index.php/ [L]
также вы должны были создать контроллер с именем user и этот контроллер должен ahve функции signin.
я использовал следующие .файл htaccess, и он работает для меня с cpanel.
# index file can be index.php, home.php, default.php etc.
DirectoryIndex index.php
# Rewrite engine
RewriteEngine On
# condition with escaping special chars
RewriteCond !^(index\.php|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/ [L,QSA]
удалить
$route['user/(:any)'] = 'user/index';
в ваши маршруты.PHP-файл. user / signin соответствует вышеуказанному условию, поэтому CI направляет запрос пользователю / индексу вместо функции" User "controller " signin".
чего вы пытаетесь достичь с помощью этой конфигурации маршрута?
открыть config.php и сделать следующее заменяет
$config['index_page'] = "index.php"
to
$config['index_page'] = ""
в некоторых случаях настройка по умолчанию для uri_protocol работает неправильно. Просто заменить $config ['uri_protocol'] = " авто" от $config ['uri_protocol'] = "REQUEST_URI"
HTACCESS
RewriteEngine on
RewriteCond !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L,QSA]
иногда "ORIG_PATH_INFO" устраняет эту проблему. Таким образом, вы также можете попробовать еще раз с изменением uri_protocol на "ORIG_PATH_INFO"
$config['uri_protocol'] = "ORIG_PATH_INFO";
и base_url должен быть абсолютным,
$config['base_url'] = "http://example.com/mysite/";
ничего не пишите .htaccess файл и удалить $route ['user / (: any)'] = 'user/index'; линия и одна вещь, очень важная убедитесь, что в вашем сервере mod переписать расширение должно быть включено.
может поможет как включить mod_rewrite в php.ini на хостинге
Я решил ту же проблему, изменив имя файла контроллера, чтобы начать с заглавной буквы.
Так же, как по умолчанию "Добро пожаловать" контроллер загружен.
есть несколько вещей, которые вы должны принять во внимание. при настройке проекта с помощью codigniter framework. следующий файл, который вы должны внести изменения.
1).реврайт:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /mysite/index.php/ [L]
2) application / config / config.в PHP
$config['base_url'] = 'http://example.com/mysite/';
$config['server_root'] = $_SERVER['DOCUMENT_ROOT'];
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
3) приложение / конфигурация / база данных.в PHP
$db['default']['hostname'] = 'localhost'; // set your hostname
$db['default']['username'] = 'root'; // set database username
$db['default']['password'] = 'root'; //set database password
$db['default']['database'] = 'XYZ'; //set your database name
$db['default']['dbdriver'] = 'mysql';
4)приложений файле/config/маршруты.в PHP
$route['default_controller'] = "user"; //your default controller
$route['404_override'] = '';
Примечание: код .реврайт файл должен находиться в корневом каталоге. здесь он должен быть в mysite папку
попробуй такое
$config['uri_protocol'] = 'PATH_INFO';
$config['enable_query_strings'] = FALSE;
Httaccess
<IfModule mod_rewrite.c>
RewriteEngine On
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [NC]
</IfModule>