隐藏入口文件出现的 No input file specified的解决方法

在 apache 环境下,只需要在站点根目录下创建.htaccess 文件,现在我拿ThinkPHP 5框架作为演示:在public目录下:.htaccess 文件其内容如下:


Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]

就可以隐藏index.php 文件

但是同样是apache 服务器环境,使用上述的方法隐藏index.php文件并不一定会成功,因为入口文件的隐藏还与PHP的版本有关。

PHP的版本分为TS 与NTS版本之分

在配PHP版本为TS时,最后一句 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
是可以正常访问的,但是在NTS时就会提示:No input file specified

TS 与NTS又是什么来的呢?
它们时PHP的线程安全检测,一般情况下:linux 下使用的是NTS,在IIS下使用的是TS

解决方法:

1、加个?问号:
RewriteRule ^(.*)$ index.php?/ 1 [ Q S A , P T , L ] 或 者 R e w r i t e R u l e ( . ∗ ) 1 [QSA,PT,L] 或者 RewriteRule ^(.*) 1[QSA,PT,L]RewriteRule(.) index.php [L,e=PATH_INFO:$1]

你可能感兴趣的:(THinkPHP5)