Перемещение сайта на новый хост и домен, все ссылки отображают домашнюю страницу? - PullRequest
0 голосов
/ 25 ноября 2010

Итак, вот моя ситуация:

Мой клиент имеет сайт на базе CodeIgniter, размещенный на каком-то общем хосте на domainA.com. Они хотели перенести сайт на новый домен и новый хост, что я и сделал. Я создал новую базу данных, экспортировал старую базу данных, импортировал ее в новую и изменил baseurl в файле config.php. Сам сайт загружается правильно.

Однако всякий раз, когда я нажимаю на ссылку в форме: «domainB.com/site/someaction», все они просто отображают или перенаправляют на домашнюю страницу. Я знаю PHP, но не имею опыта работы с CodeIgniter. Я понятия не имею, кто изначально создал сайт, чтобы обратиться к ним за помощью, поэтому я надеюсь, что кто-то на SO сможет пролить свет на то, что может происходить.

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

обновление

.htaccess:

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

config.php:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$config['base_url'] = "http://www.bidcleangrow.com/";    
$config['index_page'] = "";
$config['uri_protocol'] = "AUTO";
$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['enable_query_strings'] = FALSE;
$config['controller_trigger']   = 'c';
$config['function_trigger']     = 'm';
$config['directory_trigger']    = 'd'; // experimental not currently in use
$config['log_threshold'] = 3;
$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_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['global_xss_filtering'] = TRUE;
$config['compress_output'] = FALSE;
$config['time_reference'] = 'local';
$config['rewrite_short_tags'] = FALSE;
$config['proxy_ips'] = '';


/* End of file config.php */
/* Location: ./system/application/config/config.php *

1 Ответ

1 голос
/ 25 ноября 2010

Есть ли в новом домене настройка системного поддоменов?

RewriteCond %{REQUEST_URI} ^system.*

UPDATE

После недолгой отладки проблема была обнаружена в какой-то нечетной настройке CGI с Apache на сервере, который не устанавливал ни одну из переменных, которые CodeIgniter проверяет так, как ему хочется.

Изменение метода класса URI _fetch_uri_string() (system/libraries/URI.php:92;v1.7.2) для непосредственного просмотра $_SERVER['ORIG_PATH_INFO'] при его наличии, а не какой-либо другой переменной, решило проблему. $_SERVER['SCRIPT_NAME'] отражает эту переменную, а не является ее частью, как ожидает CodeIgniter.

ОБНОВЛЕНИЕ 2

Существует более простое решение, которое я только что обнаружил.

Изменение $config['uri_protocol'] в system/application/config/config.php на ORIG_PATH_INFO имеет тот же эффект. Да, у меня должен быть RTFM, но я никогда не использую CodeIgniter.

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