在 apache 环境下,只需要在站点根目录下创建.htaccess 文件,现在我拿ThinkPHP 5框架作为演示:在public目录下:.htaccess 文件其内容如下:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
就可以隐藏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]