[翻译] URL 重写新手指南

30. 8 月 2016 服务器 0

本文由 伯乐在线Delostik 翻译,牧师 校稿。未经许可,禁止转载!
英文出处:addedbytes。欢迎加入翻译组
伯乐在线地址:http://blog.jobbole.com/104898/

URL重写是什么?

大多数动态网站的URL中都含有变量,以告知站点哪些信息需要展示给用户。比如像下面这个URL,会通知相关的脚本加载编号为7的产品:

这种URL结构的问题在于它并不容易记忆。如果是在电话中也很难读出来(令人惊讶的是有很多人通过这种方式传递URL)。搜索引擎和用户都不能从URL中得到有用的内容信息。你没办法从URL看出在这个页面能买挪威的蓝鹦鹉(的羽毛)。这种是相当标准的URL——也就是一般你在CMS网站上看到的那种。相比下面的URL:

这种URL更清晰,也更短,更容易记忆,也更容易被念出来。尽管如此,它还是不能告诉别人它所指向的内容是什么。但是我们可以更进一步:

这就是我们要的东西了。即使不看上下文,我们也可以从这个URL中看出你要找的东西就在这个页面上。搜索引擎可以将这个URL分割成单词(搜索引擎会将URL中的连字符当做空格,但是下划线不是),然后根据这些信息更好地判断页面内容。这种URL是易于记忆和传递的。

不幸的是,要让服务器理解最后一种URL,需要我们做一番工作。当URL发起一个请求,服务器需要知道如何处理URL,才能知道该返回给用户什么内容。URL重写就是这种将最后一种URL“翻译”成服务器能理解的语言的技术。

平台和工具

根据你的服务器上运行的软件,你可能已经有URL重写模块。如果没有,大多主机都提供启用或安装相关模块的功能,你可以尝试启用它。

Apache启用URL重写是最简单的,它通常带有自己的内建URL重写模块——mod_rewrite,启动和使用mod_rewrite就像上传和命名文件一样简单。

IIS是微软的服务器软件,标配并不包含URL重写的能力,但是有很多插件提供了这种功能。ISAPI_Rewrite 是我比较推荐一款插件,这是我发现的一款功能最接近mod_rewrite的插件。在这篇文章的最后附有ISAPI_Rewrite的安装和配置说明。

下面的代码是一些使用mod_rewrite的例子。

基本的URL重写

首先我们来看一个简单的例子。我们有一个网站,含有一个单独的PHP脚本,展示了一个单独的页面,URL如下: