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

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

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

  

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

  路由配置: 

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

  结合效果看吧

  访问地址为: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可能带有‘/‘特殊字符,我在前后端做了转换。

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

时间: 2024-08-01 11:35:32

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

PHP 短连接生成

<?php #短连接生成算法 class Short_Url { #字符表 public static $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; public static function short($url) { $key = "alexis"; $urlhash = md5($key . $url); $len = strlen($urlha

PHP实现URL长连接转短连接方法总结

短链接,通俗来说,就是将长的URL 网址,通过程序计算等方式,转换为简短的网址字符串. 这样的话其好处为:1.内容需要:2.用户友好:3.便于管理. 实现短网址(short URL)系统比较流行的算法有两种 自增序列算法. 摘要算法 自增序列算法: 自增序列算法 也叫永不重复算法 设置 id 自增,一个 10进制 id 对应一个 62进制的数值,1对1,也就不会出现重复的情况.这个利用的就是低进制转化为高进制时,字符数会减少的特性. 摘要算法: 1.将长网址 md5 生成 32 位签名串,分为

使用新浪API生成短连接

公司最近需要进行短信推广,需要发送大批量带有连接地址的短信给用户,并且需要统计短信的点击量.因为需要考虑短信成本问题,需要将长连接地址生成比较短的连接.因为公司本身没有短的一级域名,所以考虑到使用第三方的短连接生成器.经过对比选择了新浪短连接生成器. 新浪接口文档地址: http://open.weibo.com/wiki/Short_url/shorten 新浪提供了xml和json两种格式进行生成短连接,这里使用的是json. 下面是请求的代码 public class ShortUrlHe

PHP生成短连接的方法

PHP生成短连接的方法.md 直接贴上方法,函数可以查看手册. <?php /** 生成短网址 * @param String $url 原网址 * @return String */ function dwz($url){ $code=floatval(sprintf('%u', crc32($url))); $surl=''; while($code){ $mod=fmod($code, 62); if($mod>9 && $mod<35){ $mod=chr($mo

自建短连接 - 链接推广分析工具

短连接大家都不陌生,例如新浪的 t.cn .京东的 3.cn .淘宝的 tb.cn 等等.都已经是家喻户晓的短连接域名.不知道有多少人像我一样,对短连接原理好奇而且尝试自建了呢? 今天发布这个文章的目的,就在于分享一下我的自建短连接过程.首先解释下短连接的实现原理,相信很多读者,在看完原理之后,已经有能力自己编写这样一个工具出来. 短连接构成:协议+域名+参数 例如:我的阿里云幸运券连接http://wzfw.ltd/qjyl .就是由"http://" + " wzfw.l

原来 laravel 路由 参数可以为可选。。。 很灵活

基本路由 您的应用程序的绝大多数路由将在 app/routes.php 文件中定义.Laravel 中最简单的路由由一个 URI 和一个闭包调用组成. 基本 GET 路由 复制代码代码如下: Route::get('/', function(){return 'Hello World';}); 基本 POST 路由 复制代码代码如下: Route::post('foo/bar', function(){return 'Hello World';}); 注册一个路由以响应所有 HTTP 方法 复制

微博URL短网址生成算法原理及(java版、php版实现实例)

短网址(Short URL),顾名思义就是在形式上比较短的网址.通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流.目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接. 例如:http://t.cn/SzjPjA 短网址服务,可能很多朋友都已经不再陌生,现在大部分微博.手机邮件提醒等地方已经有很多应用模式了,并占据了一定的市场.估计很多朋友现在也正在使用. 看过新浪的短连接服务,发现后面主要有6个字符串组成,于是第一个

微博短网址生成算法原理

短网址(Short URL),顾名思义就是在形式上比较短的网址.通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流.目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接. 例如:http://980.so/3u0JzX 表示http://www.ganmall.com.cn/h/detail/dp_928.html?chl=dwz9801 短网址服务,可能很多朋友都已经不再陌生,现在大部分微博.手机邮件提醒等地方已经有很

IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token

本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动端IM)的数据流交换方式都是Http短连接+TCP或UDP长连接来实现.Http短连接主要用于从服务器读取各种持久化信息:比如用户信息.聊天历史记录.好友列表等等,长连接则是用于实时的聊天消息或指令的接收和发送. 作为IM系统中不可或缺的技术,Http短连的重要性无可替代,但Http作为传统互联网信