首页 > 开发 > Apache > 正文

APACHE支持.htaccess伪静重写出错 No input file specified的解决方案

2020-04-16 19:29:55
字体:
来源:转载
供稿:网友

在你的Apache安装文件夹conf里找到httpd.conf文件
搜索LoadModule rewrite_module modules/mod_rewrite.so 如果前面有注释符号#,请去掉。
搜索Options FollowSymLinks,然后将它下面的AllowOverride None 修改为AllowOverride All;

【1】

没想到遇见了 No input file specified 因为项目用了URL route ,估摸着可能是rewrite的问题。
记录一下解决方案。
1.检查doc_root 是否设置此值
2.检查.hta文件 , 很多框架都是index.php当入口文件。
默认的
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
规则在apache fastcgi模式下会导致No input file specified.
修改成
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
就OK,地址正常重写。

【2】

我们都知道,使用伪静态相对来说,对搜索引擎比较友好,而我在Dreamhost的空间上启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:“No input file specified.”。
百度搜索了一下,发现还有其它空间商也有此问题,原因在于空间所使用的PHP是fast_cgi模式,而在某些情况下, 不能正确识别path_info所造成的错误,就是Wordpress也有一样的问题,还好找到了解决方案!
我们首先来看一下Wordpress及Typecho等程序默认的.htaccess里面的规则:

RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ /index.php/$1 [L]

而提示是说:“No input file specified.”,也就是说没有得到有效的文件路径。在Google中找到了解决方案,就是修改一下伪静态规则,如下:

RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ /index.php?/$1 [L]

在正则结果“$1”前面多加了一个“?”号,问题也就随之解决了。

您可能感兴趣的文章:

使用.htaccess设置图片防盗链的详细方法Apache使用 .htaccess 来实现强制https访问的方法让Apache 2支持.htaccess并实现目录加密的方法Apache使用.htaccess 屏蔽恶意 User Agent(防蜘蛛)PHP中的.htaccess伪静态文件禁止网站显示文件目录列表的2个方法(htaccess).htaccess rewrite 规则详细说明Apache服务器中.htaccess文件的实用配置示例集锦使Nginx服务器支持.htaccess的方法Apache服务器中.htaccess的基本配置总结Apache服务器中使用.htaccess实现伪静态URL的方法Ubuntu下开启Apache对.htaccess 的支持Apache2.4.x版wampserver本地php服务器如何让外网访问及启用.htaccessnginx支持.htaccess文件实现伪静态的方法分享apache使用.htaccess文件实现屏蔽wget下载网站内容21个常用的apache .htaccess文件配置技巧分享教你如何在CI框架中使用 .htaccess 隐藏url中index.php利用.Htaccess阻止IP恶意攻击网站,禁止指定域名访问,禁止机器爬虫,禁止盗链
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表