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

2022-08-30 11:35:30

有人可以帮我吗?我觉得我已经把头撞在墙上超过2个小时了。

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

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

我的托管服务提供商服务器上的相同代码给了我一个404错误代码并输出索引.php就在那里。我知道他们安装了Apache(在任何地方都找不到版本信息),并且他们正在运行PHP v5.2.8。only: No input file specified.

我在,他们正在运行一些模式。谁能提出问题可能是什么?Windows XP 64-bitLinuxPHPCGI/FastCGI

PS.如果这很重要,那就是使用友好的URL。CodeIgniter


更新1:

mod_rewrite已安装并打开。

我注意到的是,如果我换成(问号而不是正斜杠),它会进入一个无限循环。无论如何,使用问号不是一个选项,因为(必需)不会以这种方式工作。RewriteRule/index.php?$1CodeIgniter

主页也工作,当我直接请求索引.php:example.com/index.php

我开始认为可能是apache认为一旦添加了尾部斜杠,它就不再是一个文件,而是一个文件夹。如何改变这种行为?


更新 2:

我错了。
Apache 可以正确处理这些 URL。
请求(主页)或任何其他有效地址有效。
似乎只是由于某种原因没有转发查询。http://example.com/index.php/start/Apache


更新 3:

只是为了清楚我试图实现的目标。
我想像这样重写地址:

http://www.example.com/something/=>http://www.example.com/index.php/something/ http://www.example.com/something/else/=>http://www.example.com/index.php/something/else/


答案 1

我也在用它来打击我的头。我还在安装Code Igniter。

Goocher不是RewriteBase。这是我的.htaccess:

DirectoryIndex index.php

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|robots\.txt)

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

答案 2

问题

我刚才遇到了类似的问题,不幸的是,这个帖子中没有一个答案有帮助:

Zend Framework给出了“未指定输入文件”,但是:

  • 默认的 RewriteBase 很好,添加没有帮助RewriteBase /
  • 这是一个共享主机服务器,只有FastCGI可用(无法切换到SuPHP)
  • AcceptPathInfo 已打开
  • 在服务器上重写URL通常没有问题

所以答案来自以下网站:https://ellislab.com/forums/viewthread/55620/P15[死链接](即使主机不是DreamHost)。

解决方案

显然,您需要做的就是替换此行:

RewriteRule ^(.*)$ index.php/$1

有了这个:

RewriteRule ^(.*)$ index.php?/$1

问题解决了。


推荐