php url伪静态化解析

1、大家来说说URL映射吧
   一般url映射有两种方式,一种是通过mod_rewrite实现,这种网上教材很多我也不多说了。另外一种是在程序中模拟,比如类似zend Framework中的那种方式/index.php/controller/action/var1/value1/var2/value2/。这里方 式其实最主要是通过一个统一的输入接口,然后对url进行解析,最后转发到相应的controller中的module。

    我这里写了两个简单函数来模拟。
    第一个函数主要是进行地址解析,把类似/index.php/controller/action/var1/value1/var2/value2/的地址解析出来,一般来说要解析成三部分:controller,module,params。

Java代码  

  1. <?php  
  2. /** 
  3.  *对url路由进行简单的解析,支持对/path/to/site/index.php/module/action/parm/value 
  4.  * /path/to/site/index.php?/module/action/parm/value和 
  5.  * /path/to/site/?/module/action/parm/value三种形式的处理 
  6.  *@param:null 
  7.  *@return:router array 
  8.  */  
  9. function url_router() {  
  10.     $path = strip_tags ( $_SERVER ['REQUEST_URI'] );  
  11.     $strpos = strpos ( $path, '.php' );  
  12.     if ($strpos) {  
  13.         $path = substr ( $path, $strpos + 4 );  
  14.     } else {  
  15.         if (empty ( $_SERVER ['QUERY_STRING'] )) {  
  16.             $strpos = strpos ( $path, '?' );  
  17.             if ($strpos) {  
  18.                 $path = substr ( $path, $strpos + 1 );  
  19.             } else {  
  20.                 $path = '';  
  21.             }  
  22.         } else {  
  23.             $path = $_SERVER ['QUERY_STRING'];  
  24.         }  
  25.     }  
  26.     //统一化$path的格式,如果$path的第一个字符为/则去掉  
  27.     if ($path [0] == '/') {  
  28.         $path = substr ( $path, 1 );  
  29.     }  
  30.     //解析,并且路由  
  31.     if (! empty ( $path )) {  
  32.         $path = explode ( '/', $path );  
  33.         $router ['controller'] = $path [0];  
  34.         $router ['action'] = (! empty ( $path [1] )) ? $path [1] : 'index';  
  35.         //print_r($path);  
  36.         for($i = 2; $i < sizeof ( $path ); $i = $i + 2) {  
  37.             $params [$path [$i]] = (isset ( $path [$i + 1] )) ? $path [$i + 1] : '';  
  38.         }  
  39.         $router ['params'] = $params;  
  40.     } else {  
  41.         //默认路由信息  
  42.         $router ['controller'] = 'index';  
  43.         $router ['action'] = 'index';  
  44.         $router ['params'] = array ();  
  45.     }  
  46.     return $router;  
  47. }  
  48. ?>   

这里就完成主要的url解析功能,然后是转发映射,下面这个函数实现(注意这个函数的实现是结合了我自己的架构,所以你采用的话需要相应的修改,当然你的MVC如果类似zend Framework,那应该要该的不多。)

Java代码  

  1. <?php  
  2. function url_dispatch($router, $app_path = '/app/controllers/') {  
  3.     require_once (SERVER_PATH . '/libs/controller.class.php');  
  4.     $controller = $router ['controller'] . 'Controller';  
  5.     //echo SERVER_PATH.$app_path.$controller.'.class.php';  
  6.     if (! file_exists ( SERVER_PATH . $app_path . $controller . '.class.php' ))  
  7.         die ( '缺少必要的类!' );  
  8.     require_once (SERVER_PATH . $app_path . $controller . '.class.php');  
  9.     $controller = new $controller ();  
  10.     $controller->_setParam ( $router ['params'] );  
  11.     $controller->{$router ['action'] . 'Action'} ();  
  12.     return true;  
  13. }  
  14. ?>   
时间: 2024-10-15 01:45:06

php url伪静态化解析的相关文章

php实现url伪静态化

urlrewrite 系统切换^/api/(.*)  www.test.com/api/$1  //从a系统跳到test系统 url的静态化,我一般借助于apache,nginx,htaccess等,很少用php来实现url的静态化,用php来实现静态化比较麻烦,所以就个人而言是不推荐使用php来实现url静态化 一,url的静态化实现的原理 1,通过程序来把动态的url转换成静态的url,转换方法最好是统一的接口.把静态的url放到html中,这样我们通过页面看到的就是静态的url. 2,ap

IIS7伪静态化URL Rewrite模块

原文 IIS7伪静态化URL Rewrite模块 在Win7安装了IIS7.5之后,搭建一些网站或者博客,但是IIS7.5本身没有URL Rewrite功能,也就是无法实现网址的伪静态化. 从网上找了一下,原来微软IIS官方网站给IIS7及以后续版本提供了个URL重写组件. 下载地址:http://www.iis.net/download/URLRewrite 首先,打开上面网址,到IIS官方网站下载模块. 根据需要,点击右侧的下载链接(操作系统是64位的,就下载x64版本:32位的系统,就下载

zblog php版本实现URL静态化(伪静态)方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 网站的URL实现静态化虽然不是必要的,但是却是可以给你网站加分的,首先你自己和用户看着也舒服,不用再看那么多乱七八糟的符号了,其次搜索引擎抓取起来来方便,所以,如果能够实现URL静态化就尽量实现,利肯定大于弊. zblog的php版本提供了非常简单的URL静态化方法,准确的说应该是伪静态,因为它并不是真的生成了静态化的文件,只是让你看着网址是

SEO优化知识之URL静态化技术

虽然很多站长做SEO这行也很久了,但是还有很多人不知道什么是URL静态化,为什么要做URL静态化以及如何来做好URL静态化.今天小编就抽空写一篇关于URL静态化的知识与广大站长们分享! 首先我们要讲的是为什么要做URL静态化 大家知道现在大部分的网站都是采用的数据库驱动的,页面是一些开源程序生成的,而不是一个个完全由站长纯手工编辑的静态HTML文件.当我们的用户来访问网站的时候,网站程序自动根据URL里面所提供的参数来调用数据库里面的数据,从而生成网站的内容.说到这里大家已经很明了了吧,网站的U

Apache服务器下配置URL 态化的Rewrite规则

 如何在Apache环境下配置Rewrite规则 Apache Rewrite 规则 环境 URL 静态化是一个利于搜索引擎的设置,通过 URL 静态化,达到原来是动态的 PHP 页面转换为静态化的 HTML 页面,当然,这里的静态化是一种假静态,目的只是提高搜索引擎的搜索量,Comsenz 旗下的产品 Discuz!.SupeSite/X-Space.ECShop.SupeV.UCHome 等都支持此功能.当然这个功能还需要服务器环境的支持,下面介绍一下如何在 Apache 服务器下配置 UR

比较详细的Asp伪静态化方法及Asp静态化探讨_应用技巧

目前,各大搜索引擎如google.百度.雅虎已经对动态页面诸如asp,php有着不错的支持了,只要动态页面后面的参数不要太长,如控制在3个参数内,页面内容做点优化,各大搜索对该类页面收录甚至不比静态html页面差,我有个全站是asp页的网站,其收录及排名远远超过了很多静态页的网站.     当然,任何网站,结构再好,如果没有内容作为支撑的话,最终还是留不住用户.搜索引擎的发展速度,已经不是当初几乎不能收录动态页面的水平了,各大搜索都在全力发展自己的索引技术,一般的动态页面在它们那里已经是能够轻易

discuz URL 静态化

discuz URL 静态化, discuz 静态化 ,discuz论坛静态化以及discuz 静态化设置 等下面我们一一列出静态化方法. 一.Apache Web Server(独立主机用户) 首先确定您使用的 Apache 版本,还有是否加载了 mod_rewrite 模块. Apache 1.x 的用户请检查 conf/httpd.conf 中是否存在如下两段代码:   LoadModule rewrite_module     libexec/mod_rewrite.so AddModu

比较详细的Asp伪静态化方法及Asp静态化探讨

目前,各大搜索引擎如google.百度.雅虎已经对动态页面诸如asp,php有着不错的支持了,只要动态页面后面的参数不要太长,如控制在3个参数内,页面内容做点优化,各大搜索对该类页面收录甚至不比静态html页面差,我有个全站是asp页的网站,其收录及排名远远超过了很多静态页的网站. 当然,任何网站,结构再好,如果没有内容作为支撑的话,最终还是留不住用户.搜索引擎的发展速度,已经不是当初几乎不能收录动态页面的水平了,各大搜索都在全力发展自己的索引技术,一般的动态页面在它们那里已经是能够轻易的纳入麾

Discuz! X2.5在blueshost的安装及url静态化设置技巧

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 本人一直用的blushost,最近想做一个论坛.就下了一个Discuz! X2.5版本源码.现已经成功搭设,并调试成功.Discuz! X2.5各项功能均能实现.现将一些安装技巧分享给大家: 1.下载Discuz! X2.5源码压缩包.然后在本地解压.解压后有三个文件夹,readme upload 和utility. 2.我们打开upload