7

我有 3 台服务器,一台 localhost apache 服务器,一台测试远程服务器和生产实时服务器。

我在所有 3 个和本地主机上都安装了相同的 codeigniter 和站点设置,并且没有“index.php”的测试服务器路由工作 100%。然而,在生产服务器上,无论 URL 说什么,只会显示主页(通过默认控制器),似乎所有路由规则都被忽略了,除了默认规则。

但是,如果在 URL 中添加了 index.php,那么它将按预期工作。

例如,如果生产站点上的 URL 是:“www.mysite.com/information”,则加载的内容来自默认控制器。

但是当生产站点上的 URL 是:“www.mysite.com/index.php/information”时,加载的内容来自“信息”控制器。

这是我的 htacess 文件的内容:http: //pastebin.com/cDaZVJ8A

这是我的路线配置文件: http: //pastebin.com/7Ewc2bwN

我的 $config['index_page'] 设置为空。

我真的不知道为什么它不工作,就codeigniter本身而言,所有服务器上的设置相同,而 mod_rewrite 正在生产服务器上工作。

我不知道该怎么办,我怎样才能找出问题所在?

4

4 回答 4

8

这是一个很常见的问题,当人们将 codeigniter 安装从一个环境移动到另一个环境时,经常会出现这种问题。?我不知道它为什么会发生,可能是服务器操作系统或 apache 设置的差异,但解决方案通常是在 .htaccess 文件中的 index.php 的 RewriteRule 中添加一个问号。

老的:

RewriteRule ^(.*)$ index.php/$1 [L]

新的:

RewriteRule ^(.*)$ index.php?/$1 [L]
于 2012-12-05T09:09:19.160 回答
2

检查您的 Apache 虚拟主机配置并验证AllowOverride All您的目录定义中是否包含该配置。

于 2012-12-05T08:32:28.350 回答
1
  1. 也许您的 .htaccess 文件有问题?

    当我将应用程序移动到生产服务器时遇到问题,因为 RewriteBase 被设置为开发服务器上的某个目录。

    在我的生产服务器上,应用程序位于 web 根目录中,所以RewriteBase应该是/,我在/something那里。

  2. 一旦我遇到了大写/小写的愚蠢问题,当我将站点从开发服务器(Windows)移动到生产服务器(Linux)时。

于 2012-12-05T08:35:34.683 回答
0

我有同样的问题。我正在使用函数将文章名称转换为 URL(slugify)。

在 localhost 和服务器上,此函数返回略有不同的 url。

于 2014-11-22T10:25:10.427 回答