php程序员业余承接网页制作、软件开发。

有需要请联系13714715608

看看案例...

怎樣將長的URL壓縮成短的URL

2016-11-12T04:23:15.000000Z wudimei

短url其實是把長網址保存到數據庫中,通過id或者key取出來的。

我們假設有這麼一個表格:

Url網址表
 

id url
1 http://www.wudimei.com/company_website_design-a40.html
2 http://www.wudimei.com/E_commerce_Website_Design-a41.html

這樣的網址確實比較長呀。

假設我們把網址放在 http://url.wudimei.com中

訪問 http://url.wudimei.com/1 就可以獲得第一條網址"http://www.wudimei.com/company_website_design-a40.html",訪問http://url.wudimei.com/2就可以轉向第二條,以此類推。

我用wudimei php框架寫個示例。

app/routers.php
Route::get("/(:num)" ,"App\\Frontend\\IndexController");

 

App\\Frontend\\IndexController.php
use App\\Models\\Url;

class IndexController{

     public function index($id){

          $urlObj = Url::find( $id );
         header("location: ". $urlObj->url );  //跳轉到數據庫中的網址

 

    }

}
 

通過id訪問網址的代碼就完成了,其實你可以改一下,把id改成字母的,你可能要用到進制轉換。

再來説一下保存網址。其實也很簡單,查找一下網址是否存在,如果不存在則插入到數據庫中。也可以為url加一個unique約束。
$url = "http://新的長網址";

$urlObj = Url::where("url", $url )->first(); //第一個結果行,返回為對象形式。
if( !isset( $urlObj->id )){

    $id= Url::inset( ["url"=> $url]);

}

如果有unique約束,直插入即可。

$id= Url::inset( ["url"=> $url]);