雨天IT技术网

当前位置: 网站首页 > 编程开发 > PHP >

PHP实现整洁的有利于SEO的URL

时间:2017-01-07 19:29来源:网络 作者:雨天 点击:
PHP实现整洁的有利于SEO的URL,例如: http://www.my398/a/2018/ 。 该方法避免了用 txt.php?page=** 来传参数的不利,因为那样对搜索引擎不友好, 而用 / 来分隔参数,即美观,便于搜索引擎抓取, action 用 $url-__get(action); 获得 type 用 $url-__get(ty

PHP实现整洁的有利于SEO的URL,例如:http://www.my398/a/2018/

该方法避免了用 txt.php?page=** 来传参数的不利,因为那样对搜索引擎不友好,而用 / 来分隔参数,即美观,便于搜索引擎抓取,

action 用 $url->__get('action'); 获得
type 用 $url->__get('type'); 获得
(以上两个是默认的)
其余参数,前面的是参数名,后面的是参数值
$url->__get('page') 的值是 2
url->__get('flag') 的值是 4

 

具体代码如下:


  1. <?php
  2. class RequestPath{
  3.     private $parts=array(); //存储请求URL的所有部分
  4.          
  5.     /********
  6.         函数名  :__construct()
  7.         函数功能 :构造函数负责实际路径的解析
  8.         e.g : http://域名/网页/动作/动作类型/参数1名称/参数1值/参数2名称/参数2值...
  9.         e.g : http://www.huiff.com/RequestPath.class.php/edit/trackbacks/page/2/flag/4
  10.     *********************************************************************************************/
  11.     public function __construct()
  12.     {
  13.         if(isset($_SERVER['PATH_INFO']))
  14.         {
  15.             $path= (substr($_SERVER['PATH_INFO'],-1) == '/') ? substr($_SERVER['PATH_INFO'],0,-1) :$_SERVER['PATH_INFO'];
  16.         }
  17.         else
  18.         {
  19.             $path= (substr($_SERVER['REQUEST_URI'],-1) == '/') ? substr($_SERVER['REQUEST_URI'],0,-1) : $_SERVER['REQUEST_URI'];  
  20.         } 
  21.         $bits             = explode('/',substr($path,1));
  22.         $parsed['action'] = array_shift($bits); //将数组头部移出数组
  23.         $parsed[]         = $parsed['action'];
  24.         $parsed['type']   = array_shift($bits); //将数组头部移出数组
  25.         $parsed[]         = $parsed['type'];      
  26.         $parts_size=sizeof($bits);
  27.         if($parts_size % 2 != 0)
  28.         {
  29.             $parts_size -=1;  
  30.         }
  31.         for( $i = 0 ; $i < $parts_size ; $i += 2 )
  32.         {
  33.             $parsed[$bits[$i]] = $bits[$i+1];
  34.             $parsed[]          = $bits[$i+1]; 
  35.         }
  36.         if(sizeof($bits) % 2 !=0)
  37.         {
  38.             $parsed[] = array_pop($bits); 
  39.         }
  40.         $this->parts = $parsed;
  41.     } 
  42.          
  43.     /***********************************************************************************************
  44.     函数名   :__get  __set __isset
  45.     函数功能 :以下函数分别为获取,设置,和测试路径元素植       
  46.     参数$key :参数名称             
  47.     ***********************************************************************************************/
  48.     public function __get($key)
  49.     {
  50.         return $this->parts[$key]; 
  51.     }
  52.     public function __set($key , $value)
  53.     {
  54.         $this->parts[$key]=$value; 
  55.     } 
  56.     public function __isset($key)
  57.     {
  58.         return isset($this->parts[$key]);  
  59.     } 
  60. }
  61.   
  62. //这里是运用
  63. $url = new RequestPath();
  64. echo "action = ".$url->__get('action')."
  65. ";
  66. echo "type = ".$url->__get('type')."
  67. ";
  68. echo "page = ".$url->__get('page')."
  69. ";
  70. echo "index = ".$url->__get('index')."
  71. ";
  72. echo "aa = ".$url->__get('aa')."
  73. ";
  74. ?>
(责任编辑:雨天)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容