.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只要开启 ...
随机推荐
- git简单命令
1. git status(不代参数) -- 查看本地修改过的文件 git status -s (简洁) 2. git add -- 添加到暂存区 3. git commit -m '提交的mess ...
- jdk 设计模式
摘自:http://blog.csdn.net/bakeloar/article/details/6608806
- 渗透杂记-2013-07-13 关于SMB版本的扫描
smb2的溢出,其实在metasploit里面有两个扫描器可以用,效果都差不多,只是一个判断的更加详细,一个只是粗略的判断. Welcome to the Metasploit Web Console ...
- jquery.validate使用 - 常用验证脚本
一些常用的验证脚本 不会写js了,只能从网上找一些常用的验证脚本. // 手机号码验证jQuery.validator.addMethod("mobile", function(v ...
- JSON数据解析
1 JSON简介 JSON(JavaScript Object Notation),类似于XML,是一种轻量级的数据交换格式,比如在JavaEE中Struts2与Ajax在来回传递数据时,除了可以利用 ...
- Spark学习(三) -- SparkContext初始化
标签(空格分隔): Spark 本篇博客以WordCount为例说明Spark Job的提交和运行,包括Spark Application初始化.DAG依赖性分析.任务的调度和派发.中间计算结果的存储 ...
- oracle更改用户名
例如,用户名test1改为test2,在plsql界面中不支持直接更改,只能通过sql更改 1.查询系统user$中的user#值 select user#,name from user$ where ...
- 如何为数据源向导填加一种自定义的数据源类型(win示例)
https://www.devexpress.com/Support/Center/Example/Details/T310160
- [Amazon] Amazon IAP for Unity
1> 下载amazon IAP3.0 for unity plugin 2> 根据 https://developer.amazon.com/public/apis/earn/in-app ...
- centos 怎么安装 g++
centos 怎么安装 g++ 找了n久 找到一个实用的 有gcc 但是 是老版本的 tarball 编译 nmap 的时候说机器没有g++ 各种方法都试过 然后 找到下面这个方法: cento ...