没有指定输入文件:的.htaccess问题(.htaccess issues: No input f

2019-07-22 16:47发布

有人可以帮我弄这个吗? 我感觉就像我一直在打我的头靠在墙上超过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 ,他们正在运行一些Linux使用PHPCGI/FastCGI模式。 任何人都可以提出可能是什么问题呢?

PS。 如果这是重要的这对CodeIgniter与友好的URL工作。


UPDATE1:

mod_rewrite安装和。

我已经注意到的是,如果我改变RewriteRule ,以/index.php?$1 (问号代替正斜杠),它进入一个无限循环。 总之,用问号是不是作为一个选项CodeIgniter (必需)是行不通的这种方式。

当我的index.php直接请求主页也可以工作: example.com/index.php

我开始认为这可能是阿帕奇的思维,一旦尾随斜线添加它不是一个文件了,但一个文件夹。 如何改变这样的行为?


更新2:

我错了。
阿帕奇正确处理这些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/

Answer 1:

我打我的头靠在这一点。 我还安装代码点火器。

该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]


Answer 2:

问题

我刚才遇到了类似的问题,遗憾的是没有在这个线程的答案的帮助:

Zend框架是给了“未指定输入文件。”,但是:

  • 默认RewriteBase只是罚款,并加入RewriteBase /没有帮助
  • 这是一个共享的主机服务器,只FastCGI的是可用(没有切换到SuPHP能力)
  • 是的AcceptPathInfo上
  • 有一个与URL一般重写服务器上没有问题

因此,答案来自于以下站点: https://ellislab.com/forums/viewthread/55620/P15 [死链接(即使主机不是DreamHost的)。

解决方案

显然,所有你需要做的就是替换这一行:

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

有了这个:

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

问题解决了。



Answer 3:

这为我工作:

 <IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
 </IfModule>

之后index.php ,问号是很重要的!



Answer 4:

尝试,如果它与一个简单的工作RewriteCond ; 像一个仅重写不是现有的文件/文件夹/链接的一切:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

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


Answer 5:

去爸爸的用户:

  1. 登录到您的Go Daddy帐户
  2. 点击您的托管帐户。
  3. 进入设置>文件扩展名管理
  4. 改变.php然后.php5 PHP5.2X(而不是PHP5.2xFastCGI)下运行

解决了!!!!



Answer 6:

mod_rewrite是为自己好一点太聪明,因为它试图找出什么样的重定向它应该做的事。 在这种情况下,它看起来mod_rewrite像你想重定向到一个文件夹中,因此它查找该文件夹并不能找到它,因此错误。

编辑:只是要非常清楚,我认为最好的办法是改变你的重写规则:

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

除非你为什么要一个非常speciic原因,它是一个正斜杠。

编辑2:我看到你已经尝试过这一点。 你得到一个无限循环的原因是因为你在重写条件具备的index.php。 如果您删除您应该是自由的无限循环。



Answer 7:

为的.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]

的.htaccess本地主机: -

RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1


Answer 8:

这极有可能是您的主机的管理员已禁用在.htaccess中使用重写的能力。 他们甚至可能没有安装的mod_rewrite。

把它们的电子邮件,并要求

由于这是一个服务器的配置问题,或许你应该问在服务器故障

编辑(因为你是确保服务器配置正确)

你有没有考虑过用线$的结束标记您的RewriteCond?

RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico)

将(基于我有限的知识)块包含index.php文件,CSS,GFX任何网址...在URL的开始。 因为你没有在正则表达式的最后一个$,它也会阻止从那里继续对任何网址...

www.yourdomain.com/index.php/something不被转接,同样有www.yourdomain.com/js/something

也许你想添加一个$,这将需要的URL到你的正则表达式后立即结束。

RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico)$


Answer 9:

这是一次我抓到no input file specified上行动的权利:

这将导致它:

RewriteRule ^(.*\.swf)$  redirect_php.php/?a=1 [last]

该修正它:

RewriteRule ^(.*\.swf)$  redirect_php.php?a=1 [last]

注意/查询之前?

这似乎真的与中的AcceptPathInfo,大约是阅读文件名后的路径的能力:

http://domain.com/file.php/tricky_path/?regular_query_stuff


Answer 10:

因为这个问题似乎吸引了大量的关注,我想提出另一个答案有遇到相同问题的人,并不能与现有的答案的帮助来解决它。 我自己是那些人,直到五分钟前的一个。

一直以来,我的意思是经常检查你的服务器日志,因为他们可能会提供有用的信息给你。


检查我的服务器日志(Apache2.4)后,我发现的open_basedir造成的麻烦:

mod_fcgid:标准错误:PHP的警告:未知:有效open_basedir的限制。 文件(/data/sites/domain/public/index.php)是不是在允许的路径(S)内:(在/ usr / local / lib目录/ PHP:在/ usr / local / bin目录:/数据/网站/域/ HTTP -docs)中的线0未知

mod_fcgid:标准错误:PHP的警告:未知:未能打开流:操作未知不允许上线0

在这种情况下,open_basedir的处理不了我创建,因为它指向的的open_basedir设置之外的符号链接。 无论是扩大的open_basedir设置也到新的位置或将所需的文件移动到任何允许目录内..



Answer 11:

您可能正在使用Nginx的,而不是一个Apache。 该错误消息将是相同的。

回声出你的服务器的数据是肯定的。

echo $_SERVER["SERVER_SOFTWARE"];


Answer 12:

也许您的服务器AcceptPathInfo残疾人是必不可少的那种URL的正常工作。 试着启用它:

AcceptPathInfo On

好吧,试试这个规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php(/|$) index.php%{REQUEST_URI} [L]


文章来源: .htaccess issues: No input file specified