【发布时间】:2014-11-27 07:10:07
【问题描述】:
目前我正在尝试将网站移动到新的网络服务器。该站点使用 CodeIgniter,在旧服务器上,每条路线都有效。在新服务器上,它们都没有工作,即使我从旧服务器复制了整个网站。这意味着 .htaccess 文件没有区别,因为两台服务器包含完全相同的网站。甚至默认路由都不起作用,只有主页(index.php)。我在 .htaccess 中包含了从路由 URL 中删除 'index.php' 的代码,但这也不起作用。
如果我尝试访问“1.1.1.1/~user/employees”,它会给我一个 404 错误,这意味着 CodeIgniter 路由不起作用。控制器文件位于/application/controllers/employees.php,所以我不确定是什么导致了问题。
我知道这里网站上有类似的帖子,但没有一个可以解决我的问题。 config/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。
【问题讨论】:
-
之前是否在不同的文件夹中?
-
您应该查看您的 .htaccess 并搜索以
RewriteBase开头的行。确保它指向您的应用程序正在运行的目录。如果您可以通过http://www.example.com访问该应用程序,那么它应该只有一个斜线:RewriteBase /。但是如果你有一个子目录,比如http://www.example.com/~user/,在里面添加子目录:RewriteBase /~user/ -
@Ohgodwhy 它是同一个文件夹,因为我将所有文件从旧服务器复制到新服务器。 @giorgio我刚才尝试了几种可能性,但都没有奏效。我猜
RewriteBase /毕竟是正确的。
标签: php apache .htaccess codeigniter mod-rewrite