PHP写的U()函数,结合伪静态做seo优化

[文章作者:磨延城 转载请注明原文出处: https://mo2g.com/view/92/ ]

刚完成开发的网站上线的第一件事就是做seo优化,例如添加网站内容、定制页面关键词、交换网站的友情链接等相关的工作.这里,我重点说的是站内链接的优化,简洁统一的站内链会对访问网站的用户很友好,用户体验好了,相信搜索引擎会更喜欢,这就是伪静态地址的一个好处.

刚完成开发的网站上线的第一件事就是做seo优化,例如添加网站内容、定制页面关键词、交换网站的友情链接等相关的工作。这里,我重点说的是站内链接的优化,简洁统一的站内链会对访问网站的用户很友好,用户体验好了,相信搜索引擎会更喜欢,这就是伪静态地址的一个好处。

PHP网站在开发的过程,基本上使用的都是动态地址类似:http://www.xxx.com/xxx.php?xx=xx&xx=xx,为了加速搜索引擎的收录速度,最好在网站正式上线前,把动态地址更换为伪静态的方式:http://www.xxx.com/xx/xx/,这是一个优化细节。换个方式思考一下,电脑上的资料,是分类存放比较好找,还是随意存放?

很多时候,由于网站的动态地址太多了,所以在做伪静态的时候,需要修改的链接地址很多,工作量很大。所以我自己基于PHP写了一个U()函数,省去了在使用mPHP开发过程中不必要的麻烦。下边直接给出使用方法,和代码实现。

<?php
$urlA = "index.php?c=article&a=view&id=1&page=1";
$urlB = "?c=article&a=view&id=1&page=2";
$urlC = "c=article&a=view&id=3&page=1";
$urlD = "http://www.xxx.com/index.php?c=test&a=index";

echo "\$urlA = $urlA<br>";
echo "\$urlB = $urlB<br>";
echo "\$urlC = $urlC<br>";
echo "\$urlD = $urlD<br><br>";

echo '没有配置参数的链接地址<br>';
echo 'U($urlA) = ',U($urlA),'<br>';
echo 'U($urlB) = ',U($urlB),'<br>';
echo 'U($urlC) = ',U($urlC),'<br>';
echo 'U($urlD) = ',U($urlD),'<br><br>';

$CFG['url_type'] = 'DIR';//伪静态地址类型,DIR:目录类型,NODIR:无目录类型
$CFG['url_depth'] = 1;//伪静态地址目录深度,超出后用-来连接,
$CFG['url_suffix'] = '.html';//伪静态地址后缀

echo '配置参数的链接地址<br>';
echo 'U($urlA) = ',U($urlA),'<br>';
echo 'U($urlB) = ',U($urlB),'<br>';
echo 'U($urlC) = ',U($urlC),'<br>';
echo 'U($urlD) = ',U($urlD),'<br><br>';

$CFG['url_depth'] = 2;

echo '更改目录深度为2<br>';
echo 'U($urlA) = ',U($urlA),'<br>';

输出结果:

$urlA = index.php?c=article&a=view&id=1&page=1
$urlB = ?c=article&a=view&id=1&page=2
$urlC = c=article&a=view&id=3&page=1
$urlD = http://www.xxx.com/index.php?c=test&a=index

没有配置参数的链接地址
U($urlA) = http://localhost/?c=article&a=view&id=1&page=1
U($urlB) = http://localhost/?c=article&a=view&id=1&page=2
U($urlC) = http://localhost/?c=article&a=view&id=3&page=1
U($urlD) = http://www.xxx.com/?c=test&a=index

配置参数的链接地址
U($urlA) = http://localhost/article/view-1-1.html
U($urlB) = http://localhost/article/view-1-2.html
U($urlC) = http://localhost/article/view-3-1.html
U($urlD) = http://www.xxx.com/test/index.html

更改目录深度为2
U($urlA) = http://localhost/article/view/1-1.html

U()函数代码实现:

/*
作者:moyancheng
最后更新时间:2013-05-17
最后更新时间:2013-4-3
$strUrl:动态地址
$true:生成的伪静态地址是否加后缀,默认添加
*/
function U($strUrl = '',$true = true) {
	global $CFG;
	$arrGet = $arrVal =  $arrData =  array();
	$intDepth = 0;
	$intDepthMax = $CFG['url_depth'];
	
	$arrData = array(
		'?' => '',
		'index.php' => ''
	);
	$strUrl = strtr($strUrl,$arrData);
	
	if( substr($strUrl,0,7) == 'http://' || substr($strUrl,0,8) == 'https://' ) {
		$leng = strpos($strUrl,'/',7);
		$url = substr($strUrl,0,$leng).'/';
		$strUrl = strtr($strUrl,array($url => ''));
	} else {
		$url = "http://{$_SERVER['SERVER_NAME']}/";
	}
	
	if($CFG['url_type'] == 'DIR') $flag = '/';
	elseif($CFG['url_type'] == 'NODIR') $flag = '-';
	else {
		if($strUrl[0] != '?') $strUrl = "{$url}?{$strUrl}";
		return $strUrl;
	}
	
	$arrData = explode('&',$strUrl);
	foreach( $arrData as $str) {
		$arrVal = explode('=',$str);
		$arrGet[$arrVal[0]] = $arrVal[1];
	}

	$strUrl = '';
	foreach($arrGet as $key => $val) {
		if( $intDepth < $intDepthMax ) {
			$strUrl .= "{$val}{$flag}";
			++$intDepth;
		} else {
			$strUrl .= "{$val}-";
		}
	}
	
	$strUrl =  $url.trim($strUrl,'/-');
	if($true)$strUrl .= $CFG['url_suffix'];
	unset($CFG);
	
	return $strUrl;
}


评论:

  1. 暂无评论...
  2. 我来说两句:

      切换  

    磨途歌检测发现,您当前使用的浏览器版本过低,要想使用画板模式,请先更新浏览器

      切换  

    磨途歌随机验证码