一尘不染

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

php

有人可以帮我弄这个吗?我感觉自己已经将头撞在墙上超过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/


阅读 428

收藏
2020-05-29

共1个答案

一尘不染

我也反对这一点。我也在安装Code Igniter。

古怪的不是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]
2020-05-29