CodeIgniter路由 - 移动到新服务器后出现404错误

问题描述:

目前我正尝试将网站移到新的Web服务器。该网站使用CodeIgniter,并在旧的服务器上,每条路线都有效。在新服务器上,即使我从旧服务器复制了整个网站,它们都不工作。这意味着.htaccess文件没有区别,因为两个服务器包含完全相同的网站。甚至没有默认路线正在工作,只是主页(index.php)。我在.htaccess中包含了代码以从路由URL中删除'index.php',但这也行不通。CodeIgniter路由 - 移动到新服务器后出现404错误

如果我试图访问'1.1.1.1/~user/employees',它会给我一个404错误,这意味着CodeIgniter路由不起作用。控制器文件位于/application/controllers/employees.php,所以我不确定是什么导致了这个问题。

我知道这里的网站有类似的帖子,但没有一个能解决我的问题。配置/ config.php文件的配置如下(部分):

$config['base_url'] = '1.1.1.1/~user'; 
$config['index_page'] = ''; 
$config['uri_protocol'] = 'AUTO'; 

我曾试图改变BASE_URL,但它仍然如果它是空的不起作用。将uri_protocol更改为REQUEST_URI或PATH_INFO也不起作用。另外,如果我尝试使用1.1.1.1/~user/index.php/employees(所以放入'index.php /'之间),我仍然无法访问该页面。我也检查了一些Apache设置,AllowOverride设置为ALL,mod_rewrite模块已安装并启用。是否还有其他关于服务器配置差异的其他问题,我可能错过了?

编辑: 我觉得我更接近找出问题所在。它或者是Apache或者.htaccess的东西(但我已经尝试过很多),或者它与服务器URL是1.1.1.1/~user而不是2.2.2.2一样,因为它在旧服务器上。也许我应该改变我的.htaccess的baseurl或位置?这看起来类似于我的问题,但移动.htaccess并未解决问题:Url routing errors in php in codeigniter。我可能会尝试重新安装Apache。

+0

以前是否在不同的文件夹中? – Ohgodwhy 2014-10-02 09:56:01

+0

您应该查看.htaccess并搜索以'RewriteBase'开头的行。确保它指向您的应用程序所在的目录。如果您可以通过http:// www.example.com访问应用程序,则应该只有一个斜杠:'RewriteBase /'。但是如果你有一个子目录,比如'http:// www.example.com /〜user /',那么添加子目录:'RewriteBase /〜user /' – giorgio 2014-10-02 09:57:05

+0

@Ohgod为什么它是相同的文件夹,因为我全部复制从旧服务器到新文件的文件。 @giorgio我刚才尝试了几种可能性,但都没有工作。毕竟,我猜'RewriteBase /'是正确的。 – joey1105 2014-10-02 10:09:34

我认为你首先应该知道发生了什么。

  • 所有对CI的请求都通过index.php,所以你只需要回显一些内容并退出index.php文件的第一行。

  • 如果页面显示您回应的内容,表示CI中存在错误,否则这不是因为CI。你可以专注于导致问题的原因。

对不起,我的英语。

+0

我添加了一个echo并退出到索引文件的开头,并显示了回显。这对CI来说意味着什么?我没有改变这些文件的任何东西,它可以在旧的服务器上运行... – joey1105 2014-10-02 10:15:31

+0

您应该在文件夹system/core中打开文件CodeIgniter.php。然后找到“show_404”。对于他们每个人,你应该在show_404(“{$ class}/{$ method}”)之前退出并回显一些内容。并观察导致错误的行。 – jewelnguyen8 2014-10-02 10:32:28

+0

在知道引起它的原因后,您可以回显URI并查看是否有错误。我很抱歉,也许这是不是由CI引起的。但我认为你可以通过这种方式了解发生的事情。 – jewelnguyen8 2014-10-02 10:43:31