CodeIginter、Mod_重写URL和.htaccess

CodeIginter、Mod_重写URL和.htaccess,.htaccess,codeigniter,.htaccess,Codeigniter,我不确定哪个stackexchange站点最适合这个问题,因为我可以看到它适合几个站点,特别是取决于最终的答案 我面临的挑战是,我已经使用CodeIgniter编写了一个站点。该网站是一个相当简单的公司网站。我已经使用CodeIgniter实现了干净的URL,并且能够在将来扩展站点。还有一个简单的博客和“画廊”,它们都是动态的,由数据库驱动 在我的开发环境中,该站点运行良好。在我的站点暂存空间(驱动我的wordpress博客)上,站点也可以运行 问题是,当我试图将站点移动到生产服务器时,它停止工

我不确定哪个stackexchange站点最适合这个问题,因为我可以看到它适合几个站点,特别是取决于最终的答案

我面临的挑战是,我已经使用CodeIgniter编写了一个站点。该网站是一个相当简单的公司网站。我已经使用CodeIgniter实现了干净的URL,并且能够在将来扩展站点。还有一个简单的博客和“画廊”,它们都是动态的,由数据库驱动

在我的开发环境中,该站点运行良好。在我的站点暂存空间(驱动我的wordpress博客)上,站点也可以运行

问题是,当我试图将站点移动到生产服务器时,它停止工作。我已经能够打开主页(使用数据库和资产),所以我相当确定这些都正常工作。我已经将问题缩小到可能的配置问题或mod_重写问题

首先我必须提出(但我不确定这到底有多重要)服务器使用CGI/FastCGI,而我的开发和登台服务器使用“Apache2.0处理程序”。这种差异是否会导致我需要修改.htaccess文件?我在这里发布在我的开发/登台环境中工作的基本文件:

RewriteEngine on
RewriteCond $1 !^(index\.php|phpinfo\.php|images|robots\.txt|sitemap\.xml\.gz|sitemap\.xml|assets)
RewriteRule ^(.*)$ /index.php/$1 [L]
这很直截了当

当我尝试在生产服务器上运行站点时,使用此.htaccess文件,我得到:

无法执行请求的脚本 [/ufs/websites/c/[redact]/html/index.php/]:不是目录

当我将.htaccess更改为:

RewriteEngine on

RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt|sitemap\.xml\.gz|sitemap\.xml|assets)

RewriteRule ^html/(.*)$ /index.php/$1 [L]  #This WILL Present the home page correctly whereas it used to give an error
它会给我一个主页,但是其他的页面都不起作用;相反,我会得到一个404或一个空白页

目前,我对这个问题的猜测是我的规则,但我真的不能完全确定。它可能是我的配置中的一个设置。我会继续闲逛,但我希望有人在之前的工作中经历过这一点,这有助于为我指明正确的方向(或者最好是)告诉我我做错了什么。:-)


谢谢大家。

我对配置的了解还不够,但这是一个冒险——因为更改重写规则也是为了确保

$config['index_page']=''

开始

config.php

而不是


$config['index_page']='index.php'

好吧,你会看到这个问题在最初的论坛上被问了上千次。类似的情况是,每次尝试删除index.php都会很挑剔:)请参阅可以在该帖子中尝试的其他配置。

其他所有配置文件都设置正确了吗?可能会,但请检查您的
config.php
(基本URL,索引页)和
database.php
,这些都是我迁移到live时需要更新的内容。这没有什么区别。谢谢你。