使用Apache来构建URL缩短服务

用 Apache HTTP 服务器的 mod_rewrite 功能创建你自己的短链接。
  很久以前,人们开始在 Twitter 上分享链接。140 个字符的限制意味着 URL 可能消耗一条推文的大部分(或全部),因此人们使用 URL 缩短服务。最终,Twitter 加入了一个内置的 URL 缩短服务(t.co)。
  字符数现在不重要了,但还有其他原因要缩短链接。首先,缩短服务可以提供分析功能 —— 你可以看到你分享的链接的受欢迎程度。它还简化了制作易于记忆的 URL。例如,bit.ly/INtravel 比https://www.in.gov/ai/appfiles/dhs-countyMap/dhsCountyMap.html更容易记住。如果你想预先共享一个链接,但还不知道最终地址,这时 URL 缩短服务可以派上用场。。
  与任何技术一样,URL 缩短服务并非都是正面的。通过屏蔽最终地址,缩短的链接可用于指向恶意或冒犯性内容。但是,如果你仔细上网,URL 缩短服务是一个有用的工具。
  我们之前在网站上发布过缩短服务的文章,但也许你想要运行一些由简单的文本文件支持的缩短服务。在本文中,我们将展示如何使用 Apache HTTP 服务器的 mod_rewrite 功能来设置自己的 URL 缩短服务。如果你不熟悉 Apache HTTP 服务器,请查看 David Both 关于安装和配置它的文章。
  创建一个 VirtualHost
  在本教程中,我假设你购买了一个很酷的域名,你将它专门用于 URL 缩短服务。例如,我的网站是 funnelfiasco.com,所以我买了 funnelfias.co 用于我的 URL 缩短服务(好吧,它不是很短,但它可以满足我的虚荣心)。如果你不将缩短服务作为单独的域运行,请跳到下一部分。
  第一步是设置将用于 URL 缩短服务的 VirtualHost。有关 VirtualHost 的更多信息,请参阅 David Both 的文章。这步只需要几行:
  <VirtualHost *:80>
  ServerName funnelfias.co
  
  创建重写规则
  此服务使用 HTTPD 的重写引擎来重写 URL。如果你在上面的部分中创建了 VirtualHost,则下面的配置跳到你的 VirtualHost 部分。否则跳到服务器的 VirtualHost 或主 HTTPD 配置。
  1、RewriteEngine on
  2、RewriteMap shortlinks txt:/data/web/shortlink/links.txt
  3、RewriteRule^/(.+)$ ${shortlinks:$1}[R=temp,L]
  第一行只是启用重写引擎。第二行在文本文件构建短链接的映射。上面的路径只是一个例子。你需要使用系统上使用有效路径(确保它可由运行 HTTPD 的用户帐户读取)。最后一行重写 URL。在此例中,它接受任何字符并在重写映射中查找它们。你可能希望重写时使用特定的字符串。例如,如果你希望所有缩短的链接都是 “slX”(其中 X 是数字),则将上面的 (.+) 替换为 (sl\d+)。
  我在这里使用了临时重定向(HTTP 302)。这能让我稍后更新目标 URL。如果希望短链接始终指向同一目标,则可以使用永久重定向(HTTP 301)。用 permanent 替换第三行的 temp。
  构建你的映射
  编辑配置文件 RewriteMap 行中的指定文件。格式是空格分隔的键值存储。在每一行上放一个链接:
  1、osdc https://opensource.com/users/bcotton
  2、twitter https://twitter.com/funnelfiasco
  3、swody1 https://www.spc.noaa.gov/products/outlook/day1otlk.html 婴儿起名http://www.bbqmw.net/qm_yeqm
  重启 HTTPD
  最后一步是重启 HTTPD 进程。这是通过 systemctl restart httpd 或类似命令完成的(命令和守护进程名称可能因发行版而不同)。你的链接缩短服务现已启动并运行。当你准备编辑映射时,无需重新启动 Web 服务器。你所要做的就是保存文件,Web 服务器将获取到差异。
  未来的工作
  此示例为你提供了基本的 URL 缩短服务。如果你想将开发自己的管理接口作为学习项目,它可以作为一个很好的起点。或者你可以使用它分享容易记住的链接到那些容易忘记的 URL。

原文地址:https://www.cnblogs.com/sakura03/p/10836955.html

时间: 2024-08-02 02:04:24

使用Apache来构建URL缩短服务的相关文章

基于jersey和Apache Tomcat构建Restful Web服务(一)

基于jersey和Apache Tomcat构建Restful Web服务(一) 现如今,RESTful架构已然成为了最流行的一种互联网软件架构,它结构清晰.符合标准.易于理解.扩展方便,所以得到越来越多网站的采用.那么问题来了,它是什么呢? 起源 REST(Representational state transfer)在 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之一. REST 中最重要的概念是资源(resources

基于jersey和Apache Tomcat构建Restful Web服务(二)

基于jersey和Apache Tomcat构建Restful Web服务(二) 上篇博客介绍了REST以及Jersey并使用其搭建了一个简单的“Hello World”,那么本次呢,再来点有趣的东西,当然也是很简单了,仅仅是在路径中包含参数而已了.接下来开始动手实践吧. 在路径中包含参数 接下来就在上次的基础上进行改动即可,或者是再添加一个方法,随意了,这个方法主要就是在路径中加入输入的参数,并且根据参数的不同,它的返回值也不同,返回值为“Hello”+你输入的参数.这里用到了“PathPar

使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务

RESTful Web 服务简单介绍 REST 在 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之中的一个. REST 中最重要的概念是资源(resources),使用全球 ID(通常使用 URI)标识. client应用程序使用 HTTP 方法(GET/ POST/ PUT/ DELETE)操作资源或资源集.RESTful Web 服务是使用 HTTP 和 REST 原理实现的 Web 服务.通常,RESTful Web 服

用Redis打造URL缩短服务

此文章的英文版本已首发于 CodeProject : Building a simple URL shorten service with Redis 阅读文章之前,我建议你先下载源码,一边看文章,一边看代码. 代码在这里下载:http://www.codeproject.com/KB/NoSQL/819235/MicroUrl.zip Redis是什么东西 简单地说,Redis和memcached很像,也是一个内存数据库,但是,Redis可以把数据保存到硬盘,因此,Redis不但可以做缓存,还

Yii2快速构建RESTful Web服务功能简介

Yii2相比Yii1而言,一个重大的改进是内置了功能完备的RESTful支持. 其内置RESTful支持提供了如下功能: 使用ActiveRecord的通用接口来快速构建原型: 应答格式协商(缺省支持 JSON 和 XML): 可定制的对象序列化,支持选择输出哪些列: 请求数据的格式化以及验证错误: 通过HTTP 动词映射实现高效路由: 支持 OPTIONS 和 HEAD 动词: 认证 和 鉴权: 支持 HATEOAS(RESTful的架构约束,超媒体即应用程序状态): 结果缓存,可使用 yii

使用RpcLite构建SOA/Web服务(Full .Net Framework)

使用RpcLite构建SOA/Web服务(Full .Net Framework) SOA框架系列 1. 使用RpcLite构建SOA/Web服务 2. 使用RpcLite构建SOA/Web服务(Full .Net Framework) 继前一篇文章<使用RpcLite构建SOA/Web服务>已过去好几个月.在这几个月里对RpcLite作了很多修改如:.Net Core的支持.Fluent API方式配置.Monitor.Filter等功能. 前一篇文章介绍了使用RpcLite的基本用法,在文

.net/java调用NuSOAP构建的Web服务

此文主要解决php下的web服务接受和返回复杂类型(自定义类型)该如何构建以及其他程序客户端如何来调用. 第一步:用NuSOAP组件来构建基于php的webservice 下载NuSOAP组件,在创建基于php的webservice时需要引用,代码如下,很简单直观,有注释就不多解释了: <?php require_once ('lib/nusoap.php'); // 返回的是一个数组 function adduser ($userName, $userAge, $birthday, $high

Centos 6.5上构建Git Lab服务及问题总结

前言: 官方上面说并不推荐在CentOS上面安装GitLab,无奈公司的服务器都是CentOS的系统..... 不过,好在经历了三天才算把GitLab搭建起来,查了N多参考教程,发现一个问题,并不是每个教程都是通用的.总会遇到某些未知的错误是其他作者没有碰到的,毕竟每台服务器的环境是不一样的,问题百出,很是让人很是头痛. 下面总结了自己在CentOS搭建GitLab的教程以及某些错误的解决办法,算是对自己的总结吧!或许那天就用到了...... --------------------------

使用RpcLite构建SOA/Web服务

使用RpcLite构建SOA/Web服务 SOA框架系列 1. 使用RpcLite构建SOA/Web服务 提到Web服务最先想到的就是WebService此外常用的还有WCF.ServiceStack.WebApi等. RpcLite是一个开源的轻量级SOA服务框架,除了基本的提供Web服务还包括SOA治理系统(本文暂不展开在后继的文章会详细说明).RpcLite与WCF比较像,下面介绍使用方法. 1.   创建一个Web项目,Framework选择>=4.0 2.   从NuGet中添加Rpc