Apache .htaccess 问题:未指定输入文件

Apache .htaccess 问题:未指定输入文件

有人能帮我解决这个问题吗?我感觉就像已经用头撞墙超过 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]

我的托管服务提供商服务器上的相同代码给出了 404 错误代码,并且仅输出:未指定输入文件。index.php 在那里。我知道他们安装了 Apache(无法在任何地方找到版本信息)并且他们正在运行 PHP v5.2.8。

我使用的是 64 位 Windows XP,它们以 cgi/fastcgi 模式运行一些 Linux 和 php。有人能指出问题出在哪里吗?

附言:如果这对 CodeIgniter 来说很重要,那么可以使用友好的 URL。

答案1

事实证明我需要RewriteBase:

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

答案2

  1. 仔细检查换行符结尾。Apache 对 .htaccess 中的换行符比较挑剔。
  2. 在 .htaccess 中关闭多视图(选项 - 多视图),如牧羊犬IT
  3. 你可以随时使用 phpinfo() 函数了解有关你的环境的更多信息

答案3

我在尝试为我的 CodeIgniter 项目配置一个友好的 URL 时遇到了同样的问题。我终于搞明白了。让我们看看我的 apache2 配置:

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

问题出在 AllowOverride 行没有任何. 将 None 更改为全部并且有效:

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

更新:我的系统信息:

  • 服务器:Xubuntu 9.x(与 Ubuntu 基本相同)
  • Apache:版本 2.2
  • 有问题的配置位于 /etc/apache2/sites-available/default

顺便说一句,我是网页设计、php 和 CodeIgniter 的新手(我上周刚开始使用 php,昨天开始使用 CodeIgniter),所以请指出我的回答中的任何错误。

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

$ sudo a2enmod rewrite

相关内容