我有3台服务器,一台localhost apache服务器,一台测试远程服务器和一台生产实时服务器。
我在所有3个上都有相同的codeigniter和站点设置安装,在localhost和测试服务器上没有'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 IS在生产服务器上工作。
我不知道该怎么做,我怎么能找出问题所在?
答案 0 :(得分:6)
当人们将codeigniter安装从一个环境移动到另一个环境时,这是一个非常常见的问题。我不知道它为什么会发生,可能是服务器操作系统或apache设置的差异,但解决方案通常是在.htaccess文件中的index.php的RewriteRule中添加问号?
。
旧:
RewriteRule ^(.*)$ index.php/$1 [L]
新:
RewriteRule ^(.*)$ index.php?/$1 [L]
答案 1 :(得分:1)
检查Apache虚拟主机配置并验证目录定义中是否有AllowOverride All
。
答案 2 :(得分:1)
您的.htaccess文件可能出现问题?
当我将应用程序移动到生产服务器时遇到问题,因为RewriteBase被设置为开发服务器上的某个目录。
在我的生产服务器上,应用程序位于Web根目录中,因此RewriteBase
应该是/
,我在那里/something
。
一旦我对上/下案件有愚蠢的问题,当我将网站从开发服务器(windows)移动到生产(linux)时。
答案 3 :(得分:0)
我遇到了同样的问题。我正在使用函数将文章名称转换为URL' s(slugify)。
在localhost和服务器上,此函数返回的URL略有不同。