短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]);
我们期待收到您的消息