APACHE支持.htaccess伪静重写出错 No input file specified的解决方案
在你的Apache安装文件夹conf里找到httpd.conf文件
搜索LoadModulerewrite_modulemodules/mod_rewrite.so如果前面有注释符号#,请去掉。
搜索OptionsFollowSymLinks,然后将它下面的AllowOverrideNone修改为AllowOverrideAll;
【1】
没想到遇见了Noinputfilespecified因为项目用了URLroute,估摸着可能是rewrite的问题。
记录一下解决方案。
1.检查doc_root是否设置此值
2.检查.hta文件,很多框架都是index.php当入口文件。
默认的
RewriteRule^(.*)$index.php/$1[QSA,PT,L]
规则在apachefastcgi模式下会导致Noinputfilespecified.
修改成
RewriteRule^(.*)$index.php[L,E=PATH_INFO:$1]
就OK,地址正常重写。
【2】
我们都知道,使用伪静态相对来说,对搜索引擎比较友好,而我在Dreamhost的空间上启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:“Noinputfilespecified.”。
百度搜索了一下,发现还有其它空间商也有此问题,原因在于空间所使用的PHP是fast_cgi模式,而在某些情况下,不能正确识别path_info所造成的错误,就是Wordpress也有一样的问题,还好找到了解决方案!
我们首先来看一下Wordpress及Typecho等程序默认的.htaccess里面的规则:
RewriteEngineOn RewriteBase/ RewriteCond%{REQUEST_FILENAME}!-f RewriteCond%{REQUEST_FILENAME}!-d RewriteRule^(.*)$/index.php/$1[L]
而提示是说:“Noinputfilespecified.”,也就是说没有得到有效的文件路径。在Google中找到了解决方案,就是修改一下伪静态规则,如下:
RewriteEngineOn RewriteBase/ RewriteCond%{REQUEST_FILENAME}!-f RewriteCond%{REQUEST_FILENAME}!-d RewriteRule^(.*)$/index.php?/$1[L]
在正则结果“$1”前面多加了一个“?”号,问题也就随之解决了。