PbootCMS在Apache服务器上的伪静态配置与“No input file specified.”问题解决方案
一、问题背景
| 问题描述 | 原因分析 |
|---|---|
| 页面无法正常访问,提示“No input file specified.” | Apache服务器运行模式不同(模块化运行 vs fastcgi运行)导致对PATH_INFO路径的识别方式不一致。 |
二、PbootCMS官方提供的伪静态规则
默认规则
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# 如果页面出现"No input file specified." 请注释第一条,启用第二条
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
# RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1,QSA,PT,L]
</IfModule>关键备注
- 默认规则适用场景:Apache采用模块化运行方式。
- 备用规则适用场景:Apache采用fastcgi运行PHP时。
三、问题原因分析
| 运行模式 | 特点 | 是否支持PATH_INFO | 可能导致的问题 |
|---|---|---|---|
| 模块化运行 | PHP作为Apache模块加载,直接解析请求路径 | 是 | 无问题,使用默认规则即可 |
| fastcgi运行 | PHP通过fastcgi模式运行,独立于Apache处理请求 | 否 | 出现“No input file specified.”错误 |
四、解决方案
1. 修改伪静态规则
当出现“No input file specified.”错误时,需将默认规则替换为备用规则:
修改前(默认规则)
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]修改后(备用规则)
RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1,QSA,PT,L]2. 配置文件调整步骤
- 打开Apache服务器的伪静态配置文件(如
.htaccess或httpd.conf)。 - 注释掉默认规则:
# RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] - 启用备用规则:
RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1,QSA,PT,L] - 保存文件并重启Apache服务。
五、注意事项
-
运行模式判断:
- Windows环境下,大部分用户安装的Apache采用模块化运行方式,因此较少遇到此问题。
- Linux环境下,以及部分Windows用户采用fastcgi运行PHP时,可能会触发此问题。
-
域名处理:所有伪静态规则中的路径均以
域名/替代具体网址。

扫码添加技术【解决问题】
专注网站运营、网站安全十余年。
专业解决各种疑难杂症,您有任何网站问题都可联系我们技术人员。
本文来自博客园,作者:Henry王,转载请注明原文链接:https://www.cnblogs.com/heneryw/p/19296121

浙公网安备 33010602011771号