.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只要开启 ...
随机推荐
- Swift高级语法学习总结(转)
Swift高级语法学习总结 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参 ...
- JAVA经典算法40题(供面试所用)
[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数 ...
- Jmeter + Grafana + InfluxDB 性能测试监控
阅读目录 1. 安装InfluxDB 2. 安装Grafana 3. 配置Jmeter 序章 前几天在群里看到大神们在讨论Jmeter + InfluxDB + Grafana监控.说起来Jmeter ...
- codeforces 85D D. Sum of Medians 线段树
D. Sum of Medians time limit per test 3 seconds memory limit per test 256 megabytes input standard i ...
- mysql中文乱码问题解决
在mysql5.0以上,中文乱码不能用网上的大多数方法,我用网上改编码的问题,让我mysql服务器再也起不起来了. 我用的mysql5.7.16绿色免安装版. 在根目录下的配置文件里my.ini(或者 ...
- django部署
部署教程 阿里云django部署教程 注意备份Apache2的siteconf文件 细节 环境迁移 如果是修改了注意些requirement文件
- java的4种代码块
一.普通代码块 直接在一个方法中出现的{}就称为普通代码块,例子程序如下: public class CodeDemo01{ public static void main(String[] args ...
- C#操作word的一些基本方法(word打印,插入文件,插入图片,定位页眉页脚,去掉横线)
Microsoft.Office.Interop.Word.Application wordApp = new ApplicationClass() word对象 2. Microsoft.Offic ...
- html4,xhtml,html5发展历史
SGML SGML 是一种很强大但很复杂的标记语言,HTML.XML 就是从中衍生出来的.SGML 的例子如下:<QUOTE TYPE="example"> typic ...
- sql server项目死活启动不了的问题
报错没截图, 关键字"sessionfactory",tomacat 能够启动,但是网页打开是错误的 解决:c盘索引文件冲突,删除了 发生数据库c3p0错误,tomcat启动没玩没 ...