重定向和伪静态学习笔记-----基于apache重定向基础知识



重定向:
linux:vim .htaccess生成
windows:cd www ,echo 1->.htaccess

RewriteEngine On
RewriteRule ^(.*)\.htm$ $1.html 这2 行是最基础的一种



什么是伪静态:

伪静态是相对真是静态来讲,只是改变了URL的表现形式,实际上还是动态页面
伪静态有了真静态一样的SEO,网站搜索打分跟静态页面一样
什么情况下用伪静态?
    数据变化非常大。如果平静在磁盘,用伪静态,如果在CPU,用真静态

什么事重定向?
通过各种方法将各种网络请求重新定个方向转到其他位置(分内部和外部)
内部:外部看不到。
外部:url发生变化
302临时,301永久重定向

htaccess有性能问题。开启后访问页面,要查找所有上级的目录中的htaccess文件
开发阶段可以,上线后最好把配置移植到主配置文件中(httpd.conf)

php重定向  header函数 header("Location:xxx.html");

RewriteEngine On
RewriteRule ^(.*)\.htm$ $1.html   
上面这段可以写到根目录的htaccess中,活着写到httpd.comf中,在主目录配置下,Allowride..  none下面加上
浏览器输入.htm会重定向到搜索.html



apache重定向原理:


请求---判断是否开启重定向规则---没开启--直接访问
开启了---访问规则--模式匹配---rewritecond----是---所有都满足--做地址替换---之后判断是否有更多规则----
判断是否改变---没匹配--直接访问资源
匹配了----外部,跳转---内部---在回到判断是否开启规则
在阿帕奇中应判断跳转次数



mod_rewrite:apache的URL操作模块 
包含  RewriteBase,    RewriteRule,    RewriteCond,    RewriteMap
RewriteBase

现在是内部重定向,在当前目录查找

换成外部重定向:


把根目录加了进来

在$1.html前加/,也是从根目录查找,跟没加R时一样
还有一种解决方案就是配置RewrieBase

RewriteCond
TestString使用说明



$1就是匹配第一个括号里的内容,这时候例如访问xxx.htm会跳转到xxx.html
那么在有cond的时候,如果你访问了test.htm会跳转到test.html

还有一种情况,可以直接使用系统变量值



浏览器中输入127.0.0.1/index.html会跳转到localhost/index.html
还有一种模式:

如果是2,那么在浏览器输入127.0.0.1/index.html不会匹配规则,必须是1

CondPattern使用说明:
-d 是否是目录 ,-f 是否是文件 , -F文件存在并且可以访问

RewiriteCond C:/wamp/www/ -d

[flag]使用说明:
[NC]:大小写不敏感,[OR]:条件判断或,如果不加默认AND
RewriteCond条件默认是AND,就是所有条件必须都满足  如果最后加 了[OR]就是或

这个时候有一个假的条件,那么访问localhost/test.htm还是localhost/test.htm
如果加了[OR],那么会匹配规则,跳转到寻找localhost/test.html

RewriteMap语法:

RewriteMap不能在.htaccess文件中配置。
1,txt格式

map.txt里放两个映射,规则里,如果访问shtml,根据文件名的不同映射到不同的php文件中
1.httpd.conf在主目录配置外做map

根据上面设置的,在www里建立map.txt,里面写映射
(这里缺失了,自己测试吧)
2,rnd模式
建立rnd.txt,httpd.conf里添加路径

例如:RewriiteMap dirs rnd:C:/wamp/www/map.txt
内容:


htaccess里配置规则:

root是默认的,匹配不成功的话跳转到root下
这里我们先输入一个不匹配的地址:

我们访问map.txt中的URL1或URL2时会匹配成功“


因为是随机映射,刷新的话会出现S1,S2等等



rewrite日志功能:

发送所有日志(window里在apache_error.)
上线环境调成1,2就可以



rewriteRule语法:



RewriteRule R flag说明
加R是外部重定向
301永久,302临时。搜索引擎在进行SEO评分时,301会把之前的评分转移到新地址去。
302会为新地址重新评分
所以从优化的角度,用301较好

外部永久重定向,地址栏也跳转过去了


RewriteRule C flag说明
链接下一规则

必须第一个规则成功了,才会匹配系下一个规则

RewriteRule L  flag说明
这条规则匹配合格了,立即停止重写操作,不再应用其他重写规则

阿帕奇的匹配规则是一个规则匹配成功结束后,把结果做为下一跳规则的输入
例如:访问test.htm,会跳转到first.php.
        如果没加L标签的话,会跳转到second.php中

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


加了NE,不会转移特殊符号

RewriteRule NC  flag说明
不区分大小写,大小写不敏感,加了NC,在地址栏里输入大小写都可以跟规则进行匹配

比如这条规则,没加NC的时候,在地址栏里输入localhost/test/1.htm会跳转到/tmp/1.htm
但是输入Test/1.htm会跳转到/Test/1.htm,不会进行规则的匹配。
那么加了NC标签之后,Test/1.htm会匹配规则,跳转到tmp/1.htm

RewriteRule G  flag说明
gone:请求的网页失效了
对应的apache的410
比如说某个目录失效了,

,那么访问这个目录下的文件,会提示:


RewriteRule QSA  flag说明
截取URI里面的值


没有加QSA的情况,访问per/index.php?name=xxx,所有的参数都去掉了

加了QSA:



rewrite正则表达式

. :匹配任意字符,1个字符
+:重复匹配1个到多个
*:0到多个
^:开始
$:结束位置
?:前一个匹配时可选,也就是可有可无
[chars]:[a-zA-Z]
[^chars]:取反





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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值