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

新手上路,请多包涵

有人可以帮我弄这个吗?我感觉我的头撞墙已经超过 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 错误代码并输出 only: No input file specified. index.php 在那里。我知道他们安装了 Apache(在任何地方都找不到版本信息)并且他们正在运行 PHP v5.2.8。

我在 Windows XP 64-bit 上,他们正在运行一些 LinuxPHPCGI/FastCGI 模式下谁能建议可能是什么问题?

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


更新1:

mod_rewrite 已安装并打开。

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

当我直接请求 index.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/

原文由 Michal M 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 625
2 个回答

我也在为此而努力。我也在安装 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]

原文由 jray 发布,翻译遵循 CC BY-SA 2.5 许可协议

在我的情况下,我正在运行 laragon 它是由于 php.ini 文件而发生的,然后我删除了 php 并再次安装它并且它成功运行。我认为在 php.ini 文件中进行了一些更改,这就是它不显示特定输入的原因。安装 php.ini 后,它解决了我的问题。

 update php.ini

原文由 HadiNiazi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏