出于测试目的,我将所有代码和数据库记录从我们的实时服务器复制到本地服务器。
我们的实时服务器正在将www.our-site.eu
重定向到www.our-site.eu/en
,然后以特定语言显示主页。
相同的代码,本地托管的相同数据库,完全失败。 localhost
被重定向到localhost/en
。但随后出现错误404:The requested URL /en/ was not found on this server.
系统\核心\ CodeIgniter.php
$EXT->_call_hook('pre_controller');
应用\设置\ hooks.php
$hook['pre_controller'][] = array(
...
);
$hook['pre_controller'][] = array(
'class' => 'MY_Lang',
'function' => 'define_language',
'filename' => 'MY_Lang.php',
'filepath' => 'core',
'params' => array()
);
$hook['pre_controller'][] = array(
...
);
应用\芯\ MY_LANG.php
...
header('Location: '.$config['base_url'].$index_page.$URI->uri_string); //http://localhost/en
exit;
...
的.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(themes)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|assets|static|img|css|js|map|favicon\.ico)
RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA]
RewriteRule ^sitemap\.xml$ ./index.php?/$1 [L,QSA]
RewriteRule ^robots\.txt$ ./index.php?/$1 [L,QSA]
</IfModule>
<IfModule mod_deflate.c>
<filesMatch "\.(js|css|png)$">
SetOutputFilter DEFLATE
</filesMatch>
</IfModule>
AddOutputFilterByType DEFLATE text/ico text/html text/plain text/xml text/css application/javascript application/x-javascript application/x-httpd-php application/rss+xml application/atom_xml text/javascript
我的主要config.php必须遵循第$config['base_url'] = 'http://localhost/';
行
我是CodeIgniter的新手,所以我真的不知道为什么它在实时服务器上运行而不是在本地运行。
url_rewriting
在两台服务器上均处于活动状态。