.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] 等时,访客访问被重写网址时,客户端将被执行重定向(跳转)到重写后的网址。

时间: 2024-11-05 21:47:36

.htacess的url重写(支持伪静态)的相关文章

tinkphp URL重写,支持伪静态

通常的URL里面含有index.php,为了达到更好的SEO效果可能需要去掉URL里面的index.php ,通过URL重写的方式可以达到这种效果,通常需要服务器开启URL_REWRITE模块才能支持.下面是Apache的配置过程,可以参考下:1.httpd.conf配置文件中加载了mod_rewrite.so模块2.AllowOverride None 将None改为 All3.确保URL_MODEL设置为24.把下面的内容保存为.htaccess文件放到入口文件的同级目录下 <IfModul

夺命雷公狗---linux NO:37 linux下nginx的URL重写或者伪静态页面

最终效果如下所示: 其实很简单,首先在  html   目录下创建一个test.php 的文件,如下所示: 然后使用vi打开他,写份测试源码,源码如下所示: 然后保存退出,去到   /usr/local/nginx/conf   找nginx.conf   配置文件,修改一下即可.. 在46行加入修改规则即可,说白了就玩正则表达式而已,$1 是nginx给我们预留的变量,直接使用即可 rewrite leigood-(\d+)\.html /test.php?id=$1; 修改完成后回到   s

.net 实现 URL重写,伪静态(方法一)

一,获得Mircosoft URLRewriter.dll(注意:此dll文件大小约为20KB,网上有8Kb的是不完整的文件,会报错) 二,在项目中该dll文件:添加引用(可以直接拷贝放入Bin文件夹即可) 三,web.config的配置,这部是非常关键的,也是静态化能否成功的关键. <?xml version="1.0"?> <configuration> <configSections> <section name="Rewrit

nginx_3_反向代理负载均衡缓存URL重写

LEMP  nginx(FastCgi)+php-fpm location ~* \.php$ {        fastcgi_pass  127.0.0.1:9000;       } nginx配置文件main,  worker_process  error_log  user  group events {  } http {  server{       listen 80;       server_name test.hale.com;       location / {    

ASP.NET 整理比较全的URL重写解决方案

经常有人请我指导应该如何动态地“重写”URL,以在他们的ASP.NETweb应用中发布比较干净的URL端点.这个博客帖子概述了几个方法,你可以用来在ASP.NET中干净地映射或重写URL,以及按照你自己的需求组织你的URL的结构. 为什么URL映射和重写很重要? 下面是开发人员想要对URL有更大的灵活性的最常见的场景: 1) 处理这样的情形:你要更改你的web应用中网页的结构,但你同时也要确保在你移动网页后,那些被人收藏的老URL不会成为死链接.重写URL允许你透明地将请求转交到新的网页地址而不

ASP.NET伪静态 UrlRewrite(Url重写) 实现和配置

核心提示:大 家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的 静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站,利用静态文件可提高服务器的运行稳定和速度... 大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一 个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站,利用

URL重写是实现PHP伪静态

URL重写是实现PHP伪静态 应该这样说才是,URL重写是实现PHP伪静态的方式之一, 具体如: http://www.plframe.com/?x=1&y=2&z=3 换成 http://www.plframe.com/1-2-3.html 这种伪静态方式访问的话,其他最简单的方法是在网站根目录下面建一个.htaccess 文件,其内容如下: <IfModule mod_rewrite.c> RewriteEngine on RewriteRule /([\d]+)-([\d

thinkphp URL规则、URL伪静态、URL路由、URL重写、URL生成(十五)

原文:thinkphp URL规则.URL伪静态.URL路由.URL重写.URL生成(十五) 本章节:详细介绍thinkphp URL规则.URL伪静态.URL路由.URL重写.URL生成 一.URL规则 1.默认是区分大小写的 2.如果我们不想区分大小写可以改配置文件 'URL_CASE_INSENSITIVE'=>true,//url不区分大小写 *模块命名太长的情况: A.如果模块名为 UserGroupAction,复杂模块(一般是IndexAction) 那么url找模块就必要要写成

使用Apachmod_rewrit对URL重写来完成网站URL伪静态化

A pachMod_Rewrit对URL进行重写.linux系统途径通常为 /etc/httpd/conf/httpd.conf第二步首要必需得让服务器支撑mod_rewrit假如你使用的虚拟主机,完成网站伪静态化. 装备办法: 第一步找到apach装备文件httpd.conf文件在conf目录下.请事前问询你主机提供商.翻开httpd.conf找到#LoadModulrewrite_modulmodules/mod_rewrite.so把#去掉 找到A llowOverridNone 改成 A