当前位置: 首页 > news >正文

伪静态以及应用(rewrite)


1.1 伪静态的基本概念

当我们的页面,不适合使用真静态时,但我们希望url 很简洁,利用seo,这时我们可以考虑使用伪静态, 他的特点是从形式看是一个静态地址,但是在服务器端,没有这个静态页,实际上还是由动态的php页面来处理你的请求. 举例

http://localhost/news.php?type=music&id=100  url 在实际开发中,我们希望是

http://localhost/news-music-id100.html 

1.2 基本原理

图示意:

 

1.3 实现伪静态的方法

1. 直接在程序中使用正则技术来完成伪静态

2. 使用apacherewrite机制来实现伪静态

1.4 在程序中处理伪静态

看一个案例. 这个案例把很多内容融入了.

 

 

 

 

 

 

最后我们使用正则在程序中处理:


 

1.5 补充讲解正则高级-环视

参考 正则高级环视

 

1.6 使用apacherewrite机制来完成伪静态

1.1.1 快速入门案例

步骤 1. 创建一个news.php 文件.

步骤 2. 修改httpd.conf 文件,启用rewrite模块

#启用rewrite模块

LoadModule rewrite_module modules/mod_rewrite.so

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

步骤3. 配置一个虚拟主机,并规定重写规则, 习惯httpd-vhost.conf 文件

 

步骤4: 修改hosts文件

步骤5: 重启并测试, 通过. 最后我们的虚拟主机的配置如下:

 

 

1.7 关于Directory节点的细节讨论

如何在Directory节点上配置,重写规则,访问权限, 403 404 还有欢迎页面, 具体配置如下:(修改httpd-vhosts.conf)

 

 

如果,我们没有权限去修改httpd-vhosts.conf 文件,我们可以把重写规则,直接写在.htaccess文件, 然后把这个文件放入到网站的某个目录下, 我们把配置修改到.htaccess文件中,这样可以更加灵活的控制网站.

 

1.8 .htaccess文件中配置我们的访问权限

 

在网站根目录  .htaccess 文件.

 

 

 

第 2 章 
伪静态的应用

2.1 使用伪静态来控制文件夹图片的访问

我有两个目录public private , public 下面的图片可以被访问, pirvate 目录图片,只有本网站可以访问.

分析思路: 如果我们可以判断Referer值是否包含为 www.hsp.com, 如果包含,说明是本网站的请求,就返回图片,如果不包含 www.hsp.com 则可以判断是盗链的,就拒绝返回图片.

 

 

 

解决方法: 修改 pirvate 文件夹下的 .htaccess 文件.

 

 

2.2 伪静态的应用2

 

最后我们在www.hsp.com 网站的根目录下的 .htaccess 文件中,我们这样配置

#RewriteRule ([a-zA-Z_0-9]+)/([a-zA-Z_]+) index.php?c=$1&a=$2

☞ 这里有一个细节问题

RewriteRule (.+) news.php?id=$1 [QSA,L]

QSA : 表示 他把接收的值,当做一个query string ,这样我们可以把整个匹配到的结果传递给牧歌页面. L 表示他是最后一个规则,匹配后,就不再继续匹配.

2.3 伪静态应用3

 如何做到:在www.hsp.com abc.html 存在就直接访问 abc.html ,否则才去访问 index.php

如何配置:  .htaccess中增加了配置

RewriteCond %{REQUEST_FILENAME} !-f

    RewriteRule abc.html index.php

 

2.4 伪静态应用4

在很多框架中,对于框架单入口的,我们通常可以简化掉 index.php , 比如

步骤:

1. Conf/config.php 文件  将 URL_MODEL 设置为 2

2. 按步骤来配置重新规则

 

2.5 伪静态的特点总结

优点1. 利于seo 2. 占用空间小 3. 安全性相对高 4. 可以把一个动态的php,虚成多个静态页面.

缺点: 执行效率低,因为要查询数据库 。

 

2.6 伪静态和真静态的选用建议

 

相关文章:

  • 服务器表单处理
  • PHP+JQ实现ajax
  • PHP+JS实现Ajax
  • 从输入url到显示网页,后台发生了什么?
  • array_map,array_walk,array_filter的区别
  • ThinkPHP5.0的助手函数汇总
  • PHP实现微信支付流程分享
  • PHP开发微信支付和支付宝支付实例
  • PHP微信支付开发之微信退款功能示例
  • Yii2.0数据库join关联查询
  • python 读写、创建 文件
  • TMUX会话的使用
  • Git远程操作详解
  • nginx—兼容pathinfo+rewrite隐藏目录
  • 解决thinkphp5的mkdir() Permission denied问题
  • 08.Android之View事件问题
  • Create React App 使用
  • CSS实用技巧
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Fastjson的基本使用方法大全
  • JavaScript类型识别
  • java小心机(3)| 浅析finalize()
  • redis学习笔记(三):列表、集合、有序集合
  • Travix是如何部署应用程序到Kubernetes上的
  • Vue.js-Day01
  • 成为一名优秀的Developer的书单
  • 什么软件可以剪辑音乐?
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 树莓派 - 使用须知
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 运行时添加log4j2的appender
  • Android开发者必备:推荐一款助力开发的开源APP
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #控制台大学课堂点名问题_课堂随机点名
  • (7)STL算法之交换赋值
  • (day6) 319. 灯泡开关
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET 服务 ServiceController
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • @SentinelResource详解
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [android] 练习PopupWindow实现对话框
  • [BJDCTF2020]The mystery of ip1
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [C/C++]数据结构 堆的详解
  • [C++参考]拷贝构造函数的参数必须是引用类型
  • [CSS]CSS 字体属性