将网站移动到新主机和域,所有链接呈现主页?

时间:2010-11-24 23:40:01

标签: php codeigniter

所以这是我的情况:

我的客户端有一个基于CodeIgniter的站点,该站点托管在domainA.com上的某个共享主机上。他们希望将网站迁移到我已经完成的新域名和新主机。我创建了一个新数据库,并导出旧数据库并将其导入新数据库,我更改了config.php文件中的baseurl。网站本身正确加载。

但是,每当我点击表格中的链接:'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 个答案:

答案 0 :(得分:1)

新域名是否已设置子域“系统”?

RewriteCond %{REQUEST_URI} ^system.*

<强>更新

经过一段时间的调试后,发现问题是在服务器上使用Apache的一些奇怪的CGI设置,没有设置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。