RT,本来我是想到直接在htaccess文件里面路由重写,然后经过单一入口点来进行处理,这个单一入口点是为访问者做一些验证的操作,如果不符合条件则直接T掉,但是这样就要局限与apache服务器,也就是说,当我换个IIS服务器的时候就会出一些问题了。当然,我也看了一些框架的实现,他们一般都不借助htaccess文件的,取而代之的是用PATH_INFO来进行路由,但是一般都要实现编译功能,有没有其他的方法可以推荐下?本人刚学PHP,希望各位能帮帮忙

解决方案 »

  1.   

    不借助服务器,你可以让你的url类似http://project/index.php/m/c/a 你在index.php里读到/m/c/a,进行分发.
      

  2.   

    嗯。谢谢楼上的回复。
    我上面说我试过用PATH_INFO来分发处理,但是有一个问题是我所在的文件也可以直接通过确切的URL进行访问,这一点很头疼,而我看过一些框架的实现,他们的文件都是模版文件,并不是直接定位就可以访问的,对于这一点我就很头疼
      

  3.   

    在网站全局判断是否访问了php文件
      

  4.   

    可以考虑使用框架来实现URL重写
      

  5.   

    确实挺头疼,你的代码结构都构建完毕了,再去改。。因为具体也不清楚你现在的代码模块组织结构,只能给些参考。
    需要你为每个可以直接通过确切的URL进行访问的php文件加入访问限定,只能由index.php转发,不能直接访问
    假设url类似
    http://project/index.php?module=article&action=edit&id=1&catid=2
    index.php<?phpdefine('FROMGATE',true);
    $module = $_GET['module'];
    $task      = $_GET['task'];
    ob_start();
    include_once($module.'/'.$task.'.php');//根据url转发过去的具体访问文件
    $finalContent = ob_get_contents();
    ob_end_clean();echo $finalContent;
    ?>article/edit.php<?php
    defined('FROMGATE') OR Die('你不能直接访问此页面');//不是由index.php转发过来的就die给你看。
    //php codes following
    ?>