分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

laravel路由 实现短连接生成及跳转(php 301重定向)

发布时间:2023-09-06 01:53责任编辑:熊小新关键词:301重定向

  最近懒癌犯了,本来早想做的事拖了1个月。短连接这个之前工作中发送短信是用到过,一般大的网站都会有自己的短连接生成网站,我们公司也有。当然这次我是想在自己的服务器上弄。

  短连接原理:将网站地址传到mysql获取自增的id,然后加密成字符串输出到页面。当调用短连接时,后端解密获取实际的url地址,然后header函数做一个重定向跳转(301)

  

  我用了laravel框架,之前学过一点点好久没用了,做点小东西,当做是复习。

  路由配置: 

1 Route::get(‘/showindex‘, function(){2 ???????return view(‘index‘);3 });//展示输入框页面路由4 Route::get(‘/getUrl/{url?}‘, ‘UrlController@getUrl‘);//ajax插入5 Route::get(‘/{url?}‘, ‘UrlController@rediectUrl‘);//跳转路由

  结合效果看吧

  访问地址为:http://58.87.108.192/showindex

  

  前端代码:(主要就是一个ajax,请求我的getUrl,获取短连接)

 1 $(‘a‘).click(function(event) { 2 ????var url = $(‘#urlInsert‘).val(); 3 ????var reg=new RegExp("/","g"); 4 ?5 ????url=url.replace(reg,‘&&&‘); 6 ????$.ajax({ 7 ????????type:"get", 8 ????????url:‘/getUrl/‘+url, 9 ????????datatype: "html",10 ????????success:function(data){11 ????????????$(‘#urlShow‘).val(‘58.87.108.192/‘+data);12 ????????},13 ????????error: function(){14 ????????????return;15 ????????}16 ????});17 });

    后端代码:

 1.获取短连接

 1 //地址入库,获取自增id,返回加密字符串 2 public function getUrl($url= false){ 3 ????if ($url) { 4 ????????$url = str_replace(‘&&&‘,‘/‘,$url); 5 ????????$url = str_replace(array(‘https://‘, ‘http://‘),‘‘,$url); 6 ????????$res = DB::table(‘url_tables‘)->where(‘url‘, $url)->first(); 7 ????????if (!$res){ 8 ????????????????return(base_convert(DB::table(‘url_tables‘)->insertGetId([‘url‘=>$url]),10,32)); 9 ????????} else {10 ????????????????return(base_convert($res->id,10,32));11 ????????}12 ????}13 ????return false;14 }

 2.短连接跳转

 1 //实现跳转 2 public function rediectUrl($url=false) 3 { 4 ????$id = base_convert($url,32,10); 5 ????$res = DB::table(‘url_tables‘)->where(‘id‘, $id)->first(); 6 ????if($res && $url=$res->url){ 7 ????????????header("Location:http://".$url,TRUE,301); 8 ????????????exit; 9 ????}else{10 ????????????return view(‘welcome‘);11 ????}12 }

其实实现逻辑很简单,核心的代码就是 这一句

1 header("Location: http://www.baidu.com",TRUE,301);exit;

当然还有别的写法:

1 header(‘HTTP/1.1 301 Moved Permanently‘);2 header(‘Location: http://www.baidu.com‘);3 exit;

注意一点,传入的url可能带有‘/‘特殊字符,我在前后端做了转换。

laravel路由 实现短连接生成及跳转(php 301重定向)

原文地址:https://www.cnblogs.com/jwcrxs/p/9009631.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved