在apache环境下,入口文件的隐藏非常简单,只需要在站点根目录下创建.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>

但是大家要注意:同样是apache服务器环境,使用上述方式隐藏入口文件,并不一定成功!

现象:

在PHP版本TS版时,RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 这样写是可以正常访问的。但是在NTS可能会提示:No input file specified.

原因:

是因为服务器环境 和PHP的安装版本有关。
在这里大家要知道:
PHP的分TS版和NTS版。所谓TS和NTS其实是PHP的一个线程安全检测(TS是进行线程安全检测,NTS是不进行线程安全检测),一般情况下:linux下使用的是NTS ,在IIS下使用的TS。

解决办法:

  1. 在最后一句的index.php后面添加一个? ,如下:
    RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
  2. 把最后一句换成如下写法:
    RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]