首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >重定向和伪静态知识点总结

重定向和伪静态知识点总结

作者头像
友儿
发布2022-09-11 11:54:10
发布2022-09-11 11:54:10
2.5K00
代码可运行
举报
文章被收录于专栏:友儿友儿
运行总次数:0
代码可运行
之前对于重定向与伪静态的配置语法有点生疏,今天抽空系统学习了一下并且写了一些例子便于理解。

本篇文章原文地址---友儿の博客

文章内容包含以下几个方面

  • 什么是伪静态?
代码语言:txt
复制
- 伪静态是相对真实静态来讲的,
- 伪静态只是改变了URL的表现形式,实际上还是动态页面
- 伪静态有了真静态一样的SEO什么是伪静态和重定向?
代码语言:txt
复制
- 通过各种方法将各种网络请求重新定个方向转到其它位置(分为内部和外部)
- http标准协议中的3xx ( 主要用302 , 303 )
- 用重定向技术来实现伪静态.htaccess性能问题
代码语言:txt
复制
- I/O消耗
- 开启后访问页面,要查找所有.上级的目录中的.htaccess文件
- 可以被主配置文件替代mod_rewrite简介
代码语言:txt
复制
- Apache的URL操作模块
- 包含RewriteBase RewriteRule、 RewriteCond、RewriteMapLogLevel操作示范
代码语言:txt
复制
- 设置LogLevel alert rewrite:trace8 ( 1~8 )生产模式不要大于trace2
- 查看apache\_ error.log日志文件
- 只能在conf文件中设置,不能在.htaccessRewriteRule语法说明
代码语言:txt
复制
- RewriteRule模式匹配替换的URL [flags]
- 模式匹配支持Perl格式的正则表达式、和rewrite的变量
- 替换的URL支持模式匹配的结果和rewrite变量
- 多个flag用逗号隔开[R= 302,C]实现伪静态SEO的实践方法实现防盗链、限制迅雷、文件访问控制等的重定向常规应用实现动态镜像、集群网站、负载均衡等重定向高级应用
1、RewriteRule flag 参数说明R=301永久 有利于seo  评分给新地址R=302临时 默认302 重定向  给新地址新的评分 seo作弊
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteRule ^(.*)\.htm$ /$1.html [R=301]
2、C连接下一句作为一个整体
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteRule ^(.*)\.htm$ /$1.html [C]
RewriteRule ^(.*)\.html$ /$1.php
3、L 匹配到了就停止下面规则
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteRule ^(.*) first.php?url=$1 [L]
RewriteRule ^(.*) second.php?url=$1
4、R,NE不对URL中的特殊字符进行hexcode 转码 多个flag用英文逗号分开
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteRule ^(.*)\.htm /index.html#$1 [R,NE]
5、NC不区分大小写
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteRule ^test/(.*)\.htm /tmp/$1.htm [NC]
6、G请求的网页已经失效(Gone) 对应http协议的410(如下载连接按时控制下载)
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteRule ^h/.*$ - [G]
7、QSA用于在URL中截取查询字符串(值)
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteRule ^pre/(.*)$ /pre.php?url=$1 [R,QSA]
8、RewriteBase 语法 RewriteBase (设置了目录级重写的基准URL)
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteBase /test
RewriteRule ^(.*)\.htm$ $1.html [R]
9、RewriteCond TestString语法 可以加flags $1-$9 匹配的是RewriteRule的元
  • e.g.1
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteCond $1 "test"
RewriteRule ^(.*)\.htm $1.html   
e.g.2 直接调用服务器变量
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteCond %{HTTP_HOST} "127.0.0.1"
RewriteRule ^(.*)\.htm  http://localhost/$1.html [R=301]
10、RewriteCond %1-9 最后一个符合条件的分组成分
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteCond %{HTTP_HOST} "127.0.0.(.*)"
RewriteCond %1 "2"
RewriteRule ^(.*)\.htm  http://localhost/$1.html [R]
11、CondPattern 语法 -d 是否是目录 是否是文件
12、NC 大小写不敏感 同上
13、OR 条件判断的或 如果不加默认是and
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteCond E:/phpStudy -d [OR]
RewriteCond E:/phpStudy1 -d
RewriteRule ^(.*)\.htm $1.html
14、RewriteMap 语法说明 (性能提升) 参数说明 不能在.htaccess
  • MapName : 命名RewriteRule 调用
  • MapType: map 文件的类型有 txt、rnd
  • MapSource: map 文件路径 e.g.1 txt文件 RewriteMap MapName MapType:MapSource
  • http.d中不要配置在总配置Director内部
代码语言:javascript
代码运行次数:0
运行
复制
RewriteMap pages txt:e:/map.txt
  • e:/map.txt 写入映射关系
代码语言:javascript
代码运行次数:0
运行
复制
test1 pagetest1
test2 pagetest2
  • 重启服务器、在.htaccess配置
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteRule ^(.*)\.shtml ${pages:$1}
http://127.0.0.1/test2.shtml
e.g.2 rnd文件 随机映射 RewriteMap server rnd:e:/map1.txt
  • httpd-conf中不要配置在总配置Director内部
代码语言:javascript
代码运行次数:0
运行
复制
RewriteMap dirs rnd:e:/map1.txt
  • e:/map1.txt 写入映射关系
代码语言:javascript
代码运行次数:0
运行
复制
URL1 s1|s2|s3
URL2 w1|w2
  • 重启服务器
  • 在.htaccess配置 访问不成功时访问root
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteRule ^(.*)\.shtml /${dirs:$1|root}/$1.php
  • 访问http://127.0.0.1/URL2.shtml测试
15、rewrite 正则表达式
代码语言:javascript
代码运行次数:0
运行
复制
.匹配任意字符
+重复匹配1到多个
*匹配0到多个
^开始
$结束
?可选
[一个多个字母]
[^排除这些内容]
|或者
取值$1~$N来访问
16、临时重定向与永久重定向
  • 区别和作用(面向搜索引擎机器人)
  • 不是顶级目录的A页面做301定向到其它目录B ,则可以正常收录B页面
  • 而顶级目录的A页面做302定向到其它目录B ,则收录的是A页面。
17、基重定向的文件访问控制

1、防盗链

代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !localhost [NC]
RewriteRule \.(gif|jpg|png)$ - [F,NC]

2、限制访问者的IP列表

  • httpd-conf中不要配置在总配置Director内部
代码语言:javascript
代码运行次数:0
运行
复制
RewriteMap hosts-deny txt:e:/hosts.deny
  • e:/map1.txt 写入映射关系
代码语言:javascript
代码运行次数:0
运行
复制
192.168.1.73 deny
  • 重启服务器
代码语言:javascript
代码运行次数:0
运行
复制
RewriteEngine on
RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} deny [OR]
RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} deny
RewriteRule ^ - [F]
  • 浏览器访问 http://192.168.1.73/测试

3、限制迅雷(多线程下载访问)迅雷输入:about://version/

代码语言:javascript
代码运行次数:0
运行
复制
RewriteCond %{HTTP_USER_AGENT} 67.0.3396.99 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} AppleWebKit [NC]
RewriteRule . aa.html
  • 浏览器和迅雷访问http://192.168.1.73/1.jpg测试
17拓展
1、Ngnix伪静态配置
  • 防盗链示例
代码语言:javascript
代码运行次数:0
运行
复制
location ~* \.(gifljpg|png|swflv)$ {
    root html
    valid_ referers none blocked *.nginx.cn;
    if ($invalid referer) {
    rewrite ^/ www.nginx.cn
    #return 404;
    }
}
2、IIS重定向配置
代码语言:javascript
代码运行次数:0
运行
复制
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="WWW Redirect" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^test.com$" />
</conditions>
<action type="Redirect" url="http://www.test.com/{R:0}"
redirectType=“Permanent” />
3、Thinkphp重定向配置示例
代码语言:javascript
代码运行次数:0
运行
复制
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

伪静态配置、重定向相关文章

PHP各环境下的伪静态配置,可直接用

一、Apache的伪静态配置 1、网站根目录下需要有 .htaccess 文件,没有则自己创建一个,内容如下:&l...

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 之前对于重定向与伪静态的配置语法有点生疏,今天抽空系统学习了一下并且写了一些例子便于理解。
    • 本篇文章原文地址---友儿の博客
  • 2、C连接下一句作为一个整体
  • 3、L 匹配到了就停止下面规则
  • 4、R,NE不对URL中的特殊字符进行hexcode 转码 多个flag用英文逗号分开
  • 5、NC不区分大小写
  • 6、G请求的网页已经失效(Gone) 对应http协议的410(如下载连接按时控制下载)
  • 7、QSA用于在URL中截取查询字符串(值)
  • 8、RewriteBase 语法 RewriteBase (设置了目录级重写的基准URL)
  • 9、RewriteCond TestString语法 可以加flags $1-$9 匹配的是RewriteRule的元
    • e.g.2 直接调用服务器变量
  • 10、RewriteCond %1-9 最后一个符合条件的分组成分
  • 11、CondPattern 语法 -d 是否是目录 是否是文件
  • 12、NC 大小写不敏感 同上
  • 13、OR 条件判断的或 如果不加默认是and
  • 14、RewriteMap 语法说明 (性能提升) 参数说明 不能在.htaccess
    • e.g.2 rnd文件 随机映射 RewriteMap server rnd:e:/map1.txt
  • 15、rewrite 正则表达式
  • 16、临时重定向与永久重定向
  • 17、基重定向的文件访问控制
  • 17拓展
    • 1、Ngnix伪静态配置
    • 2、IIS重定向配置
    • 3、Thinkphp重定向配置示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档