+ -
当前位置:首页 → 问答吧 → 隐藏入口文件index.php后出现的问题

隐藏入口文件index.php后出现的问题

时间:2011-03-11

来源:互联网

配置环境:apache2.2(已开启rewrite)
thinkPHP/lib/Think/Util/Dispatcher.class.php(line 109):
  1. private static function parsePathInfo()
  2. {
  3. $pathInfo = array();
  4. if(C('URL_PATHINFO_MODEL')==2){
  5. $paths = explode(C('URL_PATHINFO_DEPR'),trim($_SERVER['PATH_INFO'],'/'));
  6. echo $_SERVER['PATH_INFO'];
  7. dump($paths);exit;
  8. $groupApp = C('APP_GROUP_LIST');
  9. if ($groupApp) {
  10. $arr = array_map('strtolower',explode(',',$groupApp));
  11. $pathInfo[C('VAR_GROUP')] = in_array(strtolower($paths[0]),$arr)? array_shift($paths) : '';
  12. }
复制代码
开启pathinfo模式并隐藏在url中index.php后(项目目录下放置配置好的.htaccess文件),在 IndexAction.class.php中定义的方法只有index能正常访问(仅限于不带参数),其他均出现无法加载相应模块的错误信息,究其原因,与$_SERVER['PATH_INFO']获取的字符串丢失有关,比如当前访问:http://example.com/index/index /p/2/,$_SERVER['PATH_INFO']本应获取到index/index/p/2,而实际只获取了index/p/2,导致本应该访问的是IndexAction下的index方法,却访问到了IndexAction下的p方法。而通过http://example.com /index.php/index/index/p/2方法访问则不会出现问题。

注:以上问题仅存在于在IndexAction中定义了多个方法才会出现,AAction、BAction、CAction……均正常

作者: keluo   发布时间: 2011-03-11

同样发现该问题,是apache 2.2的rewrite_mod导致的问题,因为环境变量
$_SERVER['PATH_INFO'],希望官方能够给出解决方案,谢谢。

作者: tojeff   发布时间: 2011-05-21