apache大师+伪静态_重定向和伪静态在网站中的应用(仅学习)

本文链接:https://blog.csdn.net/github_26672553/article/details/56289267

什么是伪静态和重定向

伪静态是相对真静态来讲的。伪静态只是改变了URL的表现形式,实际上还是动态页面。伪静态有了真静态一样的SEO。 重定向是通过各种方法将各种网络请求重新定个方式转到其他位置。
HTTP标准协议中的3xx (主要是302,303)

Apache环境

#重定向模块linux平台的配置安装LoadModule rewrite_module modules/mod_rewrite.so

重定向既可以在apche的主配置文件中设置,也可以在.htaccess文件中设置。
区别:修改.htaccess不需要重启apache。
注意:使用.htaccess文件,需要给其设置权限

#在apache主配置中
AllowOverride None修改为:
AllowOverride All

重定向第一个例子

RewriteEngine OnRewriteRule ^(.*).htm$ $1.html#访问.htm文件,会被替换成.html

重定向的原理和基本方法

1..htaccess的工作原理
.htaccess文件(或者『分布式配置文件』)提供了针对每个目录改变配置的方法,即在一个特定的目录中,放置一个包含指令的文件,其中的指令用于此目录及其所有子目录。

2.Apache重定向原理

7553d86294b69b3f696df24ae33cc769.png

基于Apache重定向基础知识

1.mod_rewrite简介
Apache的URL操作模块
包含:RewriteBase、RewriteRule、RewriteCond、RewriteMap

2.rewrite日志功能
在做很多调试或者排查错误的时候,最佳工具一定是它的日志。
在这里,如果你的重定向发生了错误(比如死循环),你就可以通过日志来快速定位问题。

apache2.2版本的 RewriteLog RewriteLogLevel (0关闭 9dbug)
apache2.4以上版本的 LogLevel

LogLevel操作示范

#要求:只能在apache主配置文件中,不能在.htaccess文件里配置LogLevel alert rewrite:trace8#日志最后是记录到apache_error.log文件里#1-8,生产模式不要大于trace2(或者不记录日志)

3.RewritRule语法说明

RewriteRule 模式匹配 替换的URL [flags]

模式匹配,支持Perl格式的正则表达式和rewrite的变量。
替换的URL,支持模式匹配的结果和rewrite变量。
多个flag用逗号隔开 [R=302,C]

4.RewriteRule R flag说明
强制外部重定向,后面可以加301或302跳转,不加默认的302

RewriteRule ^/?(.*).html /src/$1.php [R=302]

5.RewriteRule C flag说明
链接下一规则

RewriteRule ^/?(.*).html /src/$1.htm [C]RewriteRule ^/?(.*).html /src/$1.php

如果前一条规则不匹配,就不进入下一个规则验证了。

6.RewriteRule L flag说明
结尾规则,一旦匹配就立即停止重写操作,并不在应用其他重写规则

RewriteEngine OnRewriteRule ^(.*) first.php?url=$1 [L]RewriteRule ^(.*) second.php?url=$1

7.RewriteRule NE flag说明
不对URL中的特殊字符进行hexcode转码

RewriteEngine OnRewriteRule ^(.*).htm /index.html#$1 [R,NE]

如果不写 NE, #符号在地址栏会被转义为%23

RewriteRule ^(.*).htm /index.html#$1 [R]

8.RewriteRule NC flag说明
不区分大小写

RewriteRule ^test/(.*).htl /tmp/$1.htm [NC]

9.RewriteRule G flag说明
请求的网页已经失效(Gone)

RewriteRule ^oldulr.*$ - [G]

Apache服务器会返回410

10.RewriteRule QSA flag说明
用于在URI中截取查询字符串

RewriteRule ^per/(.*)$ /per.php?person_id=$1 [QSA,R]

11.RewriteBase 语法说明
设置了目录级重写的基准URL

RewriteEngine OnRewriteBase /testRewriteRule ^(.*).htm$ $1.html [R]

这样访问localhost/test.htm,就会跳转到 /test/test.html

12.RewriteCond 语法说明
RewriteCond指令定义了一个规则的条,即在一个RewriteRule指令之前有一个或多个RewriteCond指令。

RewriteEngine onRewriteCond $1 "test"RewriteRule ^(.*).htm $1.html

满足条件localhost/test.htm ,才能批到到 test.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值