.htacess的url重写(支持伪静态)
html网页纯静态:
1、加载的时候不需要调用数据库,打开速度快,另外减少了服务端脚本的匹配时间。
2、减少了服务器对数据响应的负荷。
3、从安全角度讲,纯静态网页不易遭受黑客攻击。
4、从网站稳定性来讲,即使网站代码或数据库出了问题,静态网站也不会受到影响。
伪静态既url重写,就是截取传入的Web请求并自动将请求重定向到其他url的过程,其目的主要是通过重写URL的方法实现去掉动态网页的参数,从而更加有利于搜索引擎的收录。
伪静态的优点有5点:
1、维护方便,网页每天都自动变化,不用维护或者说极大地减少了维护量。
2、可以方便的实现对搜索引擎的优化,易于被搜索引擎收录。
3、缩短了url的长度,隐藏文件实际路径提高了安全性,易于用户记忆和输入。
4、占空间比较小,不像纯静态那样多占用近过多的空间。
5、安全性能通过url地址隐藏或加密,让黑客无法找到真实的动态页面,同时动态文件不需要太高的权限,从而避免了木马的注入。
伪静态最大的缺点就是会占用一定量的CPU使用率,增加服务器的响应时间。
综上所述,我们该怎么选择呢?
1、既然真伪静态和伪静态对搜索引擎的效果一样,我们就可以选择伪静态了,毕竟它的优点是纯静态不可取代的。
2、大量使用伪静态会照成CPU超负荷,所以我们只要不大量使用就可以了,设计在线使用了相应的编译缓存技术,己经很好的优化并解决这个问题了。
3、静态只是针对搜索引擎的,不需要给用户使用,我们有着很成熟的伪静态技术,没有必要去做真静态,给用户造成过多不必要的麻烦。
从以上的讨论得知伪静态的重要性,但是如何实现呢?具体实现方案如下:
我的测试目录是http://localhost/test/ 在该目录下新建.htacess文件
在.htacess添加如下代码:
<IFMODULE mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^t_(.*)\.php$ test.php?id=$1 [L]
</IFMODULE>
我在我的测试目录下新建一个test.php,编辑如下内容:
<?php
echo $_GET['id'];
?>
然后在我的浏览器输入:http://localhost/test/t_3455.php
页面输出:3455
我们来看看常见的 Discuz! 7.x 论坛程序的网址伪静态化 .htaccess 文件内容:
RewriteEngine On
RewriteBase /bbs
RewriteRule ^archiver/((fid|tid)-[\w\-]+\.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2
RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2
RewriteRule ^tag-(.+)\.html$ tag.php?name=$1
“RewriteEngine On”,开启 Rewrite 规则开关;
“RewriteBase”,指后文的 RewriteRule 重写规则生效的相对路径;
“RewriteRule”,定义一条重写规则。后面的字符串通过正则表达式进行匹配,匹配字符串以 ^ 开头并以 $ 结尾,替换字符串中 $1 指被第一次被匹配成功的字符串。
此处重写规则的功能:比如当访客访问 http://www.example.com/bbs/forum-21-3.html 时,网站内容将显示为 http://www.example.com/bbs/forumdisplay.php?fid=21&page=3 的内容(访问被重写网址时,网址不会被重定向/跳转)。
另外,如果在某条重写规则末尾添加 [R] 或 [R=301] 等时,访客访问被重写网址时,客户端将被执行重定向(跳转)到重写后的网址。
.htacess的url重写(支持伪静态)的更多相关文章
- tinkphp URL重写,支持伪静态
通常的URL里面含有index.php,为了达到更好的SEO效果可能需要去掉URL里面的index.php ,通过URL重写的方式可以达到这种效果,通常需要服务器开启URL_REWRITE模块才能支持 ...
- ThinkPHP的URL重写+路由+伪静态,实现SEO效果。
1.URL重写,隐藏网址中的Index.php. ThinkPHP 作为 PHP 框架,是单一入口的,那么其原始的 URL 便不是那么友好.但 ThinkPHP提供了各种机制来定制需要的 URL 格式 ...
- Url重写和伪静态
这里是URL重写的精华:http://msdn.microsoft.com/zh-cn/library/ms972974.aspx感觉写的非常棒. 其实URL重写操作起来也是挺简单的,只要你在前台写好 ...
- apache,R,P,url重写,伪静态,反向代理
需求: 1,浏览器地址栏中URL不变 2,伪静态重写生效 ===================== <VirtualHost *> ServerName xinwen.888.com.c ...
- Haproxy配置之URL重写,支持websocket
配置文件位置:/etc/haproxy/haproxy.cfg Reqrep 正则重写 配置详情: Frontend App *: acl uri_api path_beg /api/ acl uri ...
- .net 实现 URL重写,伪静态
一,获得Mircosoft URLRewriter.dll: 获得Mircosoft URLRewriter.dll可以到http://www.microsoft.com/china/msdn/lib ...
- .net 实现 URL重写,伪静态(方法一)
一,获得Mircosoft URLRewriter.dll(注意:此dll文件大小约为20KB,网上有8Kb的是不完整的文件,会报错) 二,在项目中该dll文件:添加引用(可以直接拷贝放入Bin文件夹 ...
- ASP.NET 整理比较全的URL重写解决方案
经常有人请我指导应该如何动态地“重写”URL,以在他们的ASP.NETweb应用中发布比较干净的URL端点.这个博客帖子概述了几个方法,你可以用来在ASP.NET中干净地映射或重写URL,以及按照你自 ...
- thinkphp伪静态(url重写)
1. 服务器开启url_rewrite功能,linux空间的php虚拟主机只需要开启apache的mod_rewriet,如果是iis6.0就要安装ISAPI Rewrite模块,apache只要开启 ...
随机推荐
- 外媒速递:十大最佳心理学概念助你提升Web设计效果
外媒速递是核子可乐精选的近日国外媒体的精彩文章推荐,希望大家喜欢! 本期给大家推荐的是帮助你提升Web设计效果的十大最佳心理学概念.改善企业云环境协作效率的九款卓越工具.选择移动应用开发工具时要考虑的 ...
- GOLANG 基本数据类型 整型
基本数据类型-整型 种类 有符号(负号) int8 int16 int32 int64 无符号(无符号) uint8 uint16 uint32 uint64 架构特定(取决于系统位 ...
- 【转】使用:after清除浮动
以前总是加一个<div sytle="clear:both"></div>来解决,但这样会增加无语义的标签,下面是用after伪类实现,兼容多种浏览器.cl ...
- TFS二次开发系列:七、TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)
在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一:连接TFS服务器,并且得到之后需要使用到的类方法. /// < ...
- java学习笔记----枚举测试题
定义义一个交通灯枚举类,包含红灯.绿灯.黄灯,需要有获得下一个灯的方法,并实现红灯出现5秒之后变成绿灯,绿灯3秒之后变成黄灯,黄灯2秒之后变成红灯,如此循环 public class Test5 { ...
- AnguarJS测试的实施步骤整理
最近开发用到了AngularJS,据说目前大型系统都用这个作为前端.最近参与的一个项目,web部分重度使用了AngularJS,整个前端架构有组织有纪律.所谓的有纪律就是说,有比较完善的测试用例,用上 ...
- eclipse绘制activiti无法生成图形
今天使用eclipse绘制acitiviti,发现无法绘制图形,设置里面勾选也勾选了,同时activiti插件也是最新的,最后发现同时打开了两个eclipse窗口就不支持生成图形,看来只能开一个窗口了 ...
- iOS - QRCode 二维码
1.QRCode 在 iOS7 以前,在 iOS 中实现二维码和条形码扫描,我们所知的有,两大开源组件 ZBar 与 ZXing. 这两大组件我们都有用过,这里总结下各自的缺点: 1.ZBar 在扫描 ...
- python 03
数据结构 在 python 中有4种内建数据结构, 列表, 元组, 字典和集合. 列表 list 有序项目的数据结构, 类似数组, 是对象. 列表用中括号中用逗号分隔的项目定义.例如 ['apple' ...
- 关于xml配置实现AOP的小知识
除了前面介绍的基于JDK1.5的注解方式来定义切面,切入点和增强处理外,Spring AOP也允许直接使用XML配置文件来管理它们.在JDK1.5之前,只能使用配置文件的方式来管理,在Spring2. ...