<?php #index.php 入口文件

require_once('config.php');

if(!isset($_GET['index']) || empty($_GET['index']))
{
$_GET['index'] = 'index';
}

switch($_GET['index'])
{
case 'index':
$smarty->assign('page_title',SITE_NAME);
$smarty->display('index.tpl');
break;
}

?>
上面的代码我是想像thinkphp一样的实现单一文件入口,然后URL是这样的:http://localhost/index.php?index=index
现在的问题是,我要如何改写URL地址,使之成为这样:http://localhost/index.php/index/index (我知道可以通过PATH_INFO来改写,但是我不会用,所以请教一下大家。)
最后,我要把上面这个 http://localhost/index.php/index/index 其中的 index.php/index 隐藏了,使之成为 http://localhost/index (我知道写一个.htaccess文件可以实现,但我也不会,而且还会不会有什么更好的方法也想请教一下)
以后我就可以直接通过 http://localhost/reg 访问注册页面 http://localhost/login 访问登录页面 等等类似的实现,我该如何操作。问题大概就是上面这样,可能我叙述得不是太完善,反正意思就是这个意思,我只是个菜鸟,所以很多东西需要请教大家,望高手前辈们不吝赐教。
其实我直接使用thinkphp就可以很简单的实现我想要的功能和模式了,但是我现在是想学习PHP,而不是想快速建立一个网站,如果我一直去使用thinkphp的话,那么我可能就会错过很多底层的PHP知识的学习,我现在定位很清楚,不把底层的东西学好,越用傻瓜式的方法肯定就越学不到东西,所以我现在是想从头开始自己一步一步的写,有什么问题找资料或者请教大家,然后解决问题之后就用笔记记录下来,到最后差不多自己也可以拼凑出一个属于自己的框架,并且也能学会很多东西了。

解决方案 »

  1.   


    如果要像框架那样实现的话,建议看一下THINKPHP的源代码和开发手册,一目了然
      

  2.   

    参考 http://hi.baidu.com/80417643/blog/item/908b2cdfd82c34166227980a.html
      

  3.   

    .htaccess文件:
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    #如url为: http://localhost/index.php/aa/bb  实际内部转成http://localhost/index.php?aa=bb
    RewriteRule ^index\.php/([^/]*)/(.*) index.php?$1=$2
    #外部重写时好像Query String这个部分有bug所以先用内部重定向代替,这个仅供参考
    </IfModule>thinkphp中隐藏index.php可以这样写:
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    #index.php/index/index转换成index.php/index这样的话那控制器怎么区分不同的方法??
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
    </IfModule>
    具体可参看apache相关文档,不过你必须忍受其复杂性
      

  4.   


    首先多谢你的回复,然后我想说的是,如果我想写框架我肯定会去看thinkphp的源代码和手册,但是这个是大方向,不是两三句话就能解决问题的,所以我一步一步的来摸清楚,现在的问题就是上面提出的这两个小问题,请问你还有其他什么可以帮助我或者什么好的建议可以给我的吗?再次谢谢你!
      

  5.   

    呵呵,ls那个.htaccess是通用方案,zendframework也是这么用的.
    http://topic.csdn.net/u/20101224/13/c670bebc-76be-40f3-8a13-cdb13d0f3a08.html
      

  6.   

    Apache配置之URL重写
     
    wordpress中的永久链接需要Apache支持url重写,于是配置了一下。1、修改apache的httpd.conf文件,将下面语句前的#去掉#LoadModule rewrite_module modules/mod_rewrite.so2、修改apache的httpd.conf文件,将对应的节中的AllowOverride None 改为AllowOverride All,如<Directory “D:/Local/Apache/htdocs/”>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
    </Directory>3、在需url重写的目录下建立.htaccess文件,wordpress在开启永久链接后会只能生成,内容如下:<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>效果就是如本文链接http://witmax.cn/apache-url-rewrite.html,其实并不存在这个目录,而是通过url重写由index.php来解析支持。