亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1077 | 回復: 0
打印 上一主題 下一主題

SEO-URL優(yōu)化程序beta0.1更新至0.2版本 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2007-08-22 11:43 |只看該作者 |倒序瀏覽
更新日志:
2007-8-29 更新至beta0.2版本
          a  增加了去掉index.php的功能(可以開啟或關閉),增加.htaccess配置文件供參考。
          b  解決了在去掉“index.php”模式下(apache開啟了RewriteEngine)的,圖片或者css文件的調用出錯問題。

SEO的重要性就不熬訴了,現在的MVC框架一般可以通過路由(route)的配置及遵守其規(guī)則來實現SEO的優(yōu)化(url方面)。但早期的一些框架,如國內的PFC3,或者我們自己寫的mvc框架往往都忽視了這點。

eg:
1 /index.php?module=public&action=quickseach&time=2007&count=100
2 /search/time/2007/count/100

顯而易見,對于搜索引擎而言,第2個url會比第一個url友好得多。從我以前的項目來看,google兩種url都會收錄,但百度只能收錄第2種。如果百度不能收錄,對于國內的網站而言,無異于殘廢了~

so,我自己寫了個擴展,并添加于我以前的一個項目中(采用的pfc3)。相信稍作修改就可以直接用于其他MVC框架。

源碼

示例文件index.php(實際使用時必須為單一入口程序的入口):
beta0.1版本的,最新版請直接下載最下面的壓縮包
?php
/*
該文件為:首頁示例
程序:MVC框架SEO優(yōu)化程序 beta.0.1
作者:放棄思考 or j(QQ:376123224)
Blog: http://j.cublog.cn/ Email: huajiehe@yahoo.com.cn
時間:2007-8-23
*/
include_once( './config/route.inc.php' );//路由配置文件
include_once( './config/routing.php' );//路由器
echo '模塊為:'.$_GET['module'].'
';
echo '頁面為:'.$_GET['action'].'
';
echo '
$_GET 數組:';
print_r( $_GET );
echo '
';
echo '
$_REQUEST 數組:';
print_r( $_REQUEST );
echo '
';
?>
br>br>
a href="" target="_self">鏈接轉化1:./index.php?page=1&module=public&action=newdiarys/a>
br>br>
a href="" target="_self">鏈接轉化2:/index.php?page=1&a=xxx&b=ccc/a>--默認module和action的情況
br>br>
a href="" target="_self">鏈接轉化3:index.php?action=newdiarys&page=1/a>--默認module的情況
br>br>
a href="" target="_self">鏈接轉化4:index.php?module=visit&action=diaryview&uid=10066&diary_id=17196/a>--多參數的情況
br>br>
a href="" target="_self">font color="red">簡化的鏈接1:seach/time/2007/count/100/font>/a>--簡化的url情況1:*號表示規(guī)則
br>br>
a href="" target="_self">font color="red">簡化的鏈接2:diaryview/10066/17196/font>/a>
br>br>
a href="" target="_self">font color="red">簡化的鏈接3:picview/1234/5678/font>/a>
路由配置文件route.inc.php:
beta0.1版本的,最新版請直接下載最下面的壓縮包
?php
/*
該文件為:路由配置文件
程序:MVC框架SEO優(yōu)化程序 beta.0.1
作者:放棄思考 or j(QQ:376123224)
Blog: http://j.cublog.cn/ Email: huajiehe@yahoo.com.cn
時間:2007-8-23
*/
/*允許的模塊定義
/*--------------------------------------------------------------------------*/
$legal_modules = array('default','public','tribe','visit','search','album');
/* 一些重要的,特定的頁面,url簡化規(guī)則
* eg: 下面的設置將使得:
* /seach/time/2007/count/100 表示 index.php?module=public&action=quickseach&time=2007&count=100
* /diaryview/12/34 表示 ?module=visit&action=diary&uid=12&diary=34
* /picview/123/456 表示 ?module=album&action=picview&uid=123&pic_id=456
/*--------------------------------------------------------------------------*/
$route_rule = array(
'search' => array('public','quickseach','*'),
'diaryview' => array('visit','diary','/?uid/?diary_id'),
'picview' => array('album','picview','/?uid/?pic_id'),
);
?>

路由器routing.php:
beta0.1版本的,最新版請直接下載最下面的壓縮包
?php
/*
該文件為:路由處理器
程序:MVC框架SEO優(yōu)化程序 beta.0.1
作者:放棄思考 or j(QQ:376123224)
Blog: http://j.cublog.cn/ Email: huajiehe@yahoo.com.cn
時間:2007-8-23
*/
$server_name = $_SERVER['SERVER_NAME'];
if ( empty( $server_name ) )
    $server_name = getenv( "SERVER_NAME");
$request_uri = $_SERVER['REQUEST_URI'];
if ( empty( $request_uri ) )
    $request_uri = getenv( "REQUEST_URI");
$parameters = str_replace( $_SERVER['SCRIPT_NAME'],'',$request_uri );
$params = explode( '/',$parameters );
if ( empty( $params[0] ) )
{
    array_shift( $params );
}
$is_simple_url = false;
if ( count( $params )>0 && array_key_exists( $params[0],$route_rule) )//簡化url模式
{
    $module = $route_rule[$params[0]][0];
    $_GET['module'] = $module;
    $_REQUEST['module'] = $module;
    $is_simple_url = true;
    if ( isSet( $route_rule[$params[0]][2] ) )
    {
        $param_rule = $route_rule[$params[0]][2];
    }else
    {
        $param_rule='*';
    }
   
}else if ( count( $params )>0 && in_array( $params[0],$legal_modules) )//合法的module參數
{
    $module = array_shift( $params );
    $_GET['module'] = $module;
    $_REQUEST['module'] = $module;
}else//沒有寫module參數的情況
{
    $module = 'default';
    $_GET['module'] = $module;
    $_REQUEST['module'] = $module;
}
if ( count( $params )>0 && array_key_exists( $params[0],$route_rule) )//簡化url模式
{
    $action = $route_rule[$params[0]][1];
    $_GET['action'] = $action;
    $_REQUEST['action'] = $action;
    array_shift( $params );
}else if ( count( $params )>0 )
{
    $action = array_shift( $params );
    $action = ($action=='index') ? 'default' :$action;//如果是index,則轉化為default。寫index會比較友好
    $_GET['action'] = $action;
    $_REQUEST['action'] = $action;
}else//沒有action參數了
{
    $action = 'default';
    $_GET['action'] = $action;
    $_REQUEST['action'] = $action;
}
if ( $is_simple_url && $param_rule!=='*')
{
    //echo $param_rule.'
';
    $param_names = explode( '/?',$param_rule );
    array_shift( $param_names );
    if ( count( $param_names ) != count( $params ) )//參數個數不符合規(guī)則
    {
        die('url error');
    }
    //根據規(guī)則重寫參數
    for ( $i = 0; $i  count( $params ); $i=$i+1 )
    {
        $_GET[$param_names[$i]] = $params[$i];
        $_REQUEST[$param_names[$i]] = $params[$i];
    }
}else
{
    for ( $i = 0; $i  count( $params ); $i=$i+2 )
    {
        if ( isSet( $params[$i+1] ) )
        {
            $_GET[$params[$i]] = $params[$i+1];
            $_REQUEST[$params[$i]] = $params[$i+1];
        }    //
    }
}
//如果是規(guī)則里面需要簡化的url,則簡化之
//參數:模塊名(含/),頁面名(含/),URL參數
function simplifySeoUrl ($module,$action,$parameters)
{
    global $route_rule;
   
    $module = subStr( $module, 1 );
    $action = subStr( $action, 1 );
    //array_shift( $params );
    foreach ( $route_rule as $key => $value )
    {
        if ( $value[0]===$module && $value[1]===$action )
        {
            if ( isSet( $value[2] ) && !empty( $value[2] ) && $value[2]!=='*' )
            {
                $param_rule = $value[2];
            }else//如果沒有第三個規(guī)則參數,則返回
            {
                return '/'.$key.$parameters;
            }
            $params = explode( '/',$parameters );
            if ( empty( $params[0] ) )
            {
                array_shift( $params );
            }
            
            for ( $i = 0; $i  count( $params ); $i=$i+2 )
            {
                if ( isSet( $params[$i+1] ) )
                {
                    $param_name = $params[$i];
                    $param_value = $params[$i+1];
                    $param_rule = str_replace( '?' . $param_name, urlEncode( $param_value ), $param_rule );
                }
            }
            if ( str_replace( '/?', '', $param_rule) !== $param_rule )
            {
                die('Error: faith'.$module);
            }
            return '/'.$key.$param_rule;
        }
    }
    return '/'.$module.'/'.$action.$parameters;
}
//函數transformLink:將 “一般鏈接” 轉化成 “友好形式”
function transformLink ($url)
{
    global $route_rule;
    $is_simple_mode = false;
    $param_rule = '';
    $url_array = parse_url( $url );
   
    if ( array_key_exists( 'path',$url_array ) && !empty( $url_array['path'] ) )
    {
        $filter_array = array('./','../');//因為是單一入口程序。都是從同一個地方進入
        $path = str_replace( $filter_array, '/', $url_array['path'] );
        //die($path{0});
        //指定web根目錄
        if ( $path{0}!=='/' )
        {
            $path = '/'.$path;
        }
    }
    if ( array_key_exists( 'query',$url_array ) && !empty( $url_array['query'] ) )
    {
        $module_value = '/default';//如果沒有填寫則為default模塊
        $action_value = '/index';//如果沒有填寫則為index頁面
        $url_params = explode( '&',$url_array['query'] );
        foreach ( $url_params as $value )
        {
            list( $param_name, $param_value ) = explode( '=',$value );
            //echo $param_name.':'.$param_value.'
';
            
            if ( $param_name == 'module' )
            {
                $module_value = '/'.$param_value;
            }else if ( $param_name == 'action' )
            {
                $action_value = '/'.$param_value;
            }else
            {
                $result = $result.'/'.urlEncode( $param_name ).'/'.urlEncode( $param_value );
            }
        }
        $result = $path.simplifySeoUrl($module_value,$action_value,$result);
        return $result;
    }else
    {
        return $url;
    }
}
?>

實現效果:在模版中現有的鏈接在調用transformLink()函數處理后,都變成了“友好形式”。
服務器端程序無需進行太大改動,只要在入口處引入兩個路由文件即可實現url的全面優(yōu)化。
同時,一些重要的,特定的頁面,還可以通過簡單的配置,實現更友好的簡化

例如: 只要在配置文件中設定:
$route_rule = array(
'search' => array('public','quickseach','*'),
'diaryview' => array('visit','diary','/?uid/?diary_id'),
'picview' => array('album','picview','/?uid/?pic_id'),
);
將使得:
/search/time/2007/count/100 表示: index.php?module=public&action=quickseach&time=2007&count=100
/diaryview/12/34  表示: ?module=visit&action=diary&uid=12&diary=34
/picview/123/456 表示: ?module=album&action=picview&uid=123&pic_id=456

其他途徑:url的優(yōu)化,還可以通過mod_rewrite來實現。在使用mod_rewrite實現的情況下,你仍然可以調用上面的transformLink()函數,來快速修改你的現有鏈接。


文件:
SEO優(yōu)化程序 beta.0.1.rar
大小:
3KB
下載:
下載

文件:
SEO優(yōu)化程序 beta.0.2.rar
大小:
9KB
下載:
下載


本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/12569/showart_365164.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯網協會會員  聯系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP