Apache .htaccess问题:没有指定input文件

有人可以帮我弄这个吗。 我感觉好像我已经撞了我的头靠墙超过2小时了。

我已经在我的机器上安装了Apache 2.2.8 + PHP 5.2.6,下面的代码使用.htacces工作正常,没有错误。

RewriteEngine on RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico) RewriteRule ^(.*)$ /index.php/$1 [L] 

我的托pipe服务提供商服务器上的相同的代码给我一个404错误代码和输出只:没有input文件指定。 index.php在那里。 我知道他们已经安装了Apache(无法在任何地方find版本信息),他们正在运行PHP v5.2.8。

我在Windows XP 64位,他们正在运行一些Linux和PHP在CGI / fastcgi模式。 任何人都可以build议可能是什么问题?

PS。 如果这对CodeIgniter使用友好的URL很重要。

原来我需要RewriteBase:

 RewriteEngine on RewriteBase / RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico) RewriteRule ^(.*)$ /index.php/$1 [L] 
  1. 仔细检查换行符的结尾。 Apache在.htaccess中对他们有点挑剔。
  2. 在Sheepdog IT中读取.htaccess(选项-Multiviews)中的多视图closures
  3. 您始终可以使用phpinfo()函数来了解有关您的环境的更多信息

我遇到了同样的问题,试图为我的CodeIgniter项目configuration一个友好的URL。 我终于弄明白了。 我们来看看我的apache2configuration:

 <Directory /home/hai/www> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> 

问题是在AllowOverride None的那一行。 将None更改为All并且可以正常工作:

 <Directory /home/hai/www> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> 

更新:我的系统信息:

  • 服务器:Xubuntu 9.x(几乎与Ubuntu相同)
  • Apache:版本2.2
  • 相关configuration位于/ etc / apache2 / sites-available / default中

顺便说一句,我是网页devise,PHP和CodeIgniter的新手(我刚刚开始上周的PHP和CodeIgniter昨天),所以请在我的答案中指出任何错误。

更新2:如果以后,您将得到错误代码500而不是404.这意味着您没有启用重写模块。 发出以下命令来修复它:

 $ sudo a2enmod rewrite