PHP伪静态与短链接
如今,Web服务高速发展的时代,各式各类的门户网站,如新浪http://www.sina.com、腾讯http://www.qq.com,这些网站大家都很容易记住,因为这种名称都是有规则和含义的。如果给你一个http://14.215.177.38,你肯定记不住这个网站是什么,可是我告诉你它就是百度首页。
所以,我们在开发一个网站系统的时候,还是要对链接进行优化的,而我理解的优化类型有伪静态与短连接。
其实,如果你数据结构学的不错,这个对你来说很容易理解,毕竟它就是一种地址映射的关系。
常识告诉我们,当我们请求一个URL的时候,我们需要附带一些参数才能得到各种动态的效果,而这种附加参数方式,例如www.baidu.com?keywords=http,表示我们使用百度搜索关键字http,这样百度引擎就可以根据参数,返回响应的列表页给用户。

而,我们想实现所谓地址优化:如
伪静态
用户可以直接访问这样的链接
http://www.baidu.com/http.html 效果和上面是一样的。

短连接
如,一个链接www.baidu.com?name=lisa&age=18,我们可以转化为:www.baidu.com/lisa/18

接下来,我们来一个实战,如何在Apache服务的PHP网站系统实现伪静态和短链接呢?
我们拿到一个链接:http://localhost/index.php/act/search/op/index/cate_id/314
第一步,我们去掉index.php
配置Apache Rewrite实现
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)html$ /index.php/$1 [QSA,PT,L]
</IfModule>
第二步,对链接进行映射和静态处理
#获取请求完整URI地址
$path_info = $_SERVER['REQUEST_URI'];
#截获参数部分
$path_info = substr($path_info,strrpos($path_info,'/')+1);
#过滤?号后面内容
if(strpos($path_info, '?')) {
$path_info = substr($path_info, 0, (int) strpos($path_info, '?'));
}
//去掉伪静态扩展名
$path_info = substr($path_info,0,-strlen($this->_rewrite_extname));
//根据规则匹配URL
$path_info = $this->path_info_function($path_info); #根据路由规则匹配(路由表)
private function path_info_function($path_info) {
$reg_match_from = array(
'/^article-(\d+)$/',
'/^article_cate-(\d+)$/'
);
$reg_match_to = array(
'article-show-article_id-\\1',
'article-article-ac_id-\\1'
);
return preg_replace($reg_match_from,$reg_match_to,$path_info);
} #匹配完成后,得到参数字符串;并对其进行解析,得到参数表
$split_array = preg_split($this->_pathinfo_pattern,$path_info); //act,op强制赋值,得到路由
$_GET['act'] = isset($split_array[0]) ? $split_array[0] : 'index';
$_GET['op'] = isset($split_array[1]) ? $split_array[1] : 'index';
一切搞定。
这样我们就可以得到,一个短链接,并且支持伪静态:http://localhost/search-index-314.html
PHP伪静态与短链接的更多相关文章
- PHP实现新浪长链接转化成短链接API
我们经常收到类似于这样的短信(如下图),发现其中的链接并不是常规的网址链接,而是个短小精悍的短链接,产品中经常需要这样的需求,如果在给用户下发的短信中是一个很长的连接,用户体验肯定很差,因此我们需要实 ...
- 长链接转换成短链接(iOS版本)
首先需要将字符串使用md5加密,添加NSString的md5的类别方法如下 .h文件 #import <CommonCrypto/CommonDigest.h> @interface NS ...
- 基于Redis的短链接设计思路
[Markdown阅读][1] 今天上班的时候收到一个需要短链接的需求,之前的做法都是使用了新浪的短链接API(https://api.weibo.com/2/short_url/shorten.js ...
- 微信开发第8章 通过accesstoken将长连接转换为短链接
业务场景:开发的过程中经常会有一些很长的链接,这个时候如果生成二维码,会导致扫码的过程中识别比较慢,如果存入数据库,会导致数据库的字段长度要设定的很长才行,所以把长连接转换为短链接就越来越重要了. 接 ...
- 新浪短链接API接口示例
<?php /** * URL地址长短切换,由sina新浪短链接API生成 * User: chenqt * Date: 2016/8/23 * Time: 18:45 */ class Url ...
- android实现点击短链接进入应用 并获得整个连接的内容
例如:我收到一个短信是一个链接:http://www.qq.com/a/b/?, 当我点击以后我要实现的场景是:点击----->有两种情况可供选择:手机中有此应用,跳转到应用:反之,则进入网页. ...
- 使用.net 自建短链接(短网址)
短连接大家都不陌生,例如新浪的 t.cn .京东的 3.cn .淘宝的 tb.cn 等等.都已经是家喻户晓的短连接域名.不知道有多少人像我一样,对短连接原理好奇而且尝试自建了呢? 今天发布这个文章的目 ...
- 世界上最好的语言搭建短链接及统计功能(附API代码)
前言 在这个营销的时代,短链接和二维码是企业进行营销中非常重要的工具,不仅仅是缩短了链接,而且还可以通过扩展获得更多的数据,诸如点击数.下载量.来源以及时间等等. 网上搜寻了一下比较有名有U.NU和0 ...
- 微信公众号开发C#系列-10、长链接转短链接
1.概述 短网址的好处众多,便于记忆,占用字符少等,现在市面上出现了众多的将长网址转变为短网址的方法,但是由于他们都是小的公司在幕后运营,所以很不靠谱,面对随时关闭服务的可能,这样也导致我们将转换好了 ...
随机推荐
- hdu 1506 Largest Rectangle in a Histogram(单调栈)
L ...
- Java配置文件Properties的读取、写入与更新操作
/** * 实现对Java配置文件Properties的读取.写入与更新操作 */ package test; import java.io.BufferedInputStream; import j ...
- python学习之路-9 socket网络编程
socket基础 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. so ...
- (36)JS运动之使物体向右运动
基本思路:样式要是绝对定位,不然的话根本走不起来.当开启一个定时器的时候.必须先清除定时器.这是为了防止鼠标连续点击button而开启多个定时器,导致物体的速度加快等原因,其次要控制好物体的运动和停止 ...
- 文件系统 busybox and initramfs
1.busybox制作根文件系统 http://wenku.baidu.com/link?url=h2m_xrj6OsLiHVVhMY2e0C7WKikw_H3dZY_b4mUiW1E7AEf_q34 ...
- 初步swift语言学习笔记9(OC与Swift杂)
笔者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/34440159 转载请注明出处 假设认为文章对你有所帮助,请通过留言 ...
- File类的使用
java.io.File 类用于表示文件(目录) File类只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问 file类常用的api package com.zhb.java; i ...
- Java中的编码格式
Java中的编码 gbk编码 中文占用2个字节,英文占1个字节; utf-8编码 中文占用3个字节.,英文占用1个字节; Java是双字节编码 (utf-16be) utf -16be 中文占2个字节 ...
- 深入C语言内存区域分配(进程的各个段)详解(转)
原文地址:http://www.jb51.net/article/39696.htm 一般情况下,一个可执行二进制程序(更确切的说,在Linux操作系统下为一个进程单元,在UC/OSII中被称为任务) ...
- poj3159 Candies(差分约束)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Candies Time Limit: 1500MS Memory Limit ...