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

Posted 叫我超人先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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?}\', \'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重定向)的主要内容,如果未能解决你的问题,请参考以下文章

vue路由对不同界面进行传参及跳转的总结

关于vue路由对不同界面进行传参及跳转的总结

php跳转网络连接

用Vue2.0实现简单的分页及跳转

23.https证书及跳转

手机网站判断及跳转