人人人妻人人人妻人人人,99精品国产综合久久久久五月天 ,欧美白人最猛性XXXXX,日韩AV无码免费播放

News新聞

業(yè)界新聞動態(tài)、技術(shù)前沿
Who are we?

您的位置:首頁      樂道系統(tǒng)FAQ      實(shí)現(xiàn)對圖片seo的方法

實(shí)現(xiàn)對圖片seo的方法

標(biāo)簽: 發(fā)布日期:2014-02-28 00:00:00 842

做圖片的SEO也是很有必要的,如果更為理想化的把SEO作為信息元數(shù)據(jù)的補(bǔ)充的話。但實(shí)際上,更多的seoer是為了獲得更好的頁面權(quán)重來做seo的,所以我也不得不追隨大流而進(jìn)行開發(fā)。本文主要是來談?wù)勅绾卧诔绦蛏蠈?shí)現(xiàn)圖片的seo

本文實(shí)現(xiàn)圖片使用的src為本站域名能訪問到的地址;這個地址是虛擬的,而不是在這個位置確實(shí)有一張圖(雖然訪問它確實(shí)能看到圖,這里使用了遠(yuǎn)程圖片抓取技術(shù),但并沒有保存在本地),這樣就節(jié)省了本站的存儲空間,這是本程序最大的亮點(diǎn);更為突出的是,為了滿足seo需求,img標(biāo)簽的src和alt屬性都以所在文章的別名作為關(guān)鍵字,可以說將這一部分做到極致,而且這一切都是自動化的。我想這一功能的需求量不一定很多,而在國內(nèi)可能還是第一粒。

首先,我們創(chuàng)建一個數(shù)據(jù)庫表來保管我們的圖片信息,以及對應(yīng)的src。

 

復(fù)制代碼
代碼如下:

$sql = "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}seo_image`(
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`image_name` char(250) NOT NULL,
`image_type` text NOT NULL,
`image_src` longtext NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;";
$wpdb->query($sql);

 

這個數(shù)據(jù)表是用來保存所有我們要進(jìn)行處理的圖片。(注意,有這么幾種圖片是我們不需要處理的:本站的圖片,非http地址訪問的圖片)

其次,我們需要有一些和數(shù)據(jù)庫打交道的函數(shù),這由我們自己去撰寫。這些函數(shù)用來完成我們所要處理的插入、查詢、修改、刪除等操作。

接著,我們需要一個圖片處理函數(shù)image($src),這個函數(shù)的功能是將圖片的原地址進(jìn)行轉(zhuǎn)換,輸出為一個經(jīng)過SEO化的地址,且又能被訪問。我在我的程序中如此進(jìn)行處理:

 

復(fù)制代碼
代碼如下:

function image($src){
global $slipForImg;
if(strpos($src,'http') !== 0)return $src;
if(strpos($src,'http') === 0 && strpos($src,get_bloginfo('url')) === 0)return $src;
$imageinfo = pathinfo($src);
$image_ext = $imageinfo['extension'];
if(
strpos($image_ext,'jpg') !== 0
&& strpos($image_ext,'jpeg') !== 0
&& strpos($image_ext,'gif') !== 0
&& strpos($image_ext,'png') !== 0
)return $src;
$image = create_image($src);
return get_bloginfo('url')."/{$slipForImg}/".$image->image_name.'.'.$image->ID.'.'.$image->image_type;
}

 

上述的函數(shù)中存在一個create_image()函數(shù),即前一個步驟中提到的和數(shù)據(jù)庫打交道的函數(shù)。而我還創(chuàng)造了另一個函數(shù)img($src)=function(){echo image($src);}用來打印SEO化的地址。如果我們需要在主題中使用某一張圖片,我們就可以使用下面的代碼來做到:

 

復(fù)制代碼
代碼如下:

<img src="<?php img('http://www.jb51.net/test.jpg'); ?>" />

 

當(dāng)然,在上述的代碼中還是存在我所說的和數(shù)據(jù)庫打交道的函數(shù)。不過關(guān)鍵的在于修改the_content等中的img[src]值,同時我還進(jìn)行了alt的修改,以讓圖片實(shí)現(xiàn)alt的SEO效果。

最后,我們需要真的能使用這些虛擬的圖片地址把圖片打印出來,我們先通過判斷$_SERVER["REQUEST_URI"]來了解當(dāng)前的地址是不是我們準(zhǔn)備好的虛擬地址。這里有一個小技巧,在一般的虛擬主機(jī)中,如果開啟了重寫功能,URI如果不存在,就會使用index.php模板,如果在BAE等云平臺上,就比較麻煩了,因?yàn)樗鼈儾恢С诌@種URI段(主要指帶文件名后綴的段,如.jpg結(jié)尾),所以沒有辦法,我們需要加一個?來幫助,即第一個段為?img,而非img。這樣一來,/?img/my-test.jpg就可以被用作一張圖片的訪問地址了。

可是地址雖然可以被訪問,如何使這個訪問地址指向一張圖片呢?或許你會以為要修改.htaccess或其他重定向方法,而我卻想到了php的header()函數(shù),因此選擇了使用header("Content-type: image/jpeg");來輸出一張圖片。這一點(diǎn)點(diǎn)破之后就好辦了,你可以查詢imagejpeg這個函數(shù)來了解如何在一個php網(wǎng)頁中打印一張圖片。但是需要注意的是,似乎也會存在例外,我在打印png圖片的時候始終無法打印出來,迫不得已的情況下使用了下面這段代碼。

 

復(fù)制代碼
代碼如下:

header("Content-Type: image/png");
echo file_get_contents($src);

 

 

這雖然不嚴(yán)格,卻真的能夠打印出一張圖片來。