伪静态的实际运用

1. 在一个项目中有两个文件夹,public和private, public文件夹的图片可以被所有人访问,private只能被自己访问。如何实现?

第一个方法是:

在public和private下创建.htaccess文件,对于private只让127.0.0.1访问,public文件夹都可以访问。

private文件夹下的配置

order deny,allow      #注意deny,allow中间不能由空格

deny from all

allow from 127.0.0.1

这个的缺点是,没有办法去控制本apache的另外一个虚拟主机的请求。

另外这个不够精细化,他会封杀所有的资源,不仅仅是图片。

于是我们就换一个思路,使用http的referer的防盗链技术。

第二个方法是:

在private文件夹下写一个.htaccess文件

<ifModule rewrite_module>

RewriteEngine On

# RewriteCond:满足某个条件则放行,不被RewriteRule束缚

# HTTP协议,如果是外网来的必须带一个Referer

# 如果请求头不是hsp.fi就封杀

# 但是可以自己模拟一个http请求头,这样就可以取出图片!

RewriteCond %{HTTP_REFERER} !hsp.fi

#[F] - Forbidden, 如果请求的是jpg图片,则禁用

RewriteRule .*\.jpg -[F]

RewriteRule .*\.css -[F]

RewriteRule .*\.js -[F]

</ifModule>

注意:如果RewriteCond有多个条件则:

<ifModule rewrite_module>

RewriteEngine On

# RewriteCond:满足某个条件则放行,不被RewriteRule束缚

# HTTP协议,如果是外网来的必须带一个Referer

# 如果请求头不是hsp.fi就封杀

# 但是可以自己模拟一个http请求头,这样就可以取出图片!

RewriteCond %{HTTP_REFERER} !hsp.fi

RewriteCond %{HTTP_FILENAME} !-f

#[F] - Forbidden, 如果请求的是jpg图片,则禁用

RewriteRule .*\.jpg -[F]

RewriteRule .*\.css -[F]

RewriteRule .*\.js -[F]

#可以配置多份

RewriteCond %{HTTP_REFERER} !hsp2.fi

RewriteRule .*\.jpg -[F]

</ifModule>

课堂练习:

配置一个网站.answer.fi

配置网站的欢迎页面,404,rewrite,public,private图片的控制

1. 配置vhost, 注意allowoverwrite all

2. 配置host

3. 建一个文件夹answer

4. 创建error, public, private目录,和welcome.html, .htaccess文件

.htaccess文件中的配置

Allow from All

#配置首页面

DirectoryIndex welcome.html

errorDocument 404 /error/404.html

5. 在error目录下放404.html页面

6. 在public目录下做配置

Allow from all

7. 在private目录下做配置

<ifModule rewrite_module>

RewriteEngine On

RewriteCond %{HTTP_REFERER} !answer.fi

RewriteRule .*\.jpg -[F]

</ifModule>

补充说明:

1. 关于404的说明:

对于ie浏览器而言,404页面的内容大小不能低于512b字节。

2. 如果在<Directory>节点配置了 Options Indexes,同时你又启用了rewriteEngine On你会看到403的提示. 原因是因为我们的父级目录的Options 本身就配好了 Options Indexes FollowSymLinks,

我们要不不配置要么就平配一样的,重写一遍。

伪静态实际运用2:

实现:

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

运用3:

rewriteCond指令的介绍

如何做到,当abc.html存在就直接访问abc.html, 否则就去访问index.php?

#如果请求的abc.html不是一个文件就走index, 如果是一个文件就不走过滤机制

RewriteCond %{REQUEST_FILENAME} !-f

#并且不是一个目录

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule abc.html index.php

伪静态实际运用4:

在TP框架中使用rewrite简化url地址,目的是seo,步骤:

【PHP 】伪静态 - 4. 实际运用的更多相关文章

  1. PHP如何实现网址伪静态

    Apache的 mod_rewrite是比较强大的,在进行网站建设时,可以通过这个模块来实现伪静态. 主要步骤如下: 1.检测Apache是否开启mod_rewrite功能     可以通过php提供 ...

  2. wamp集成环境开启rewrite伪静态支持

    wamp集成环境在安装完后,默认是没有开启伪静态的,所以有时把项目部署进去时如果源码里包含.htaccess文件的话,可能会出现500错误,这一般是因为不支持伪静态造成的,解决这个问题的办法就是开启伪 ...

  3. ASP.NET伪静态实现

    ASP.NET伪静态实现 在asp.net下,如何自己写代码来实现伪静态呢?如何重写url地址呢? 例如:本来aspx的页面地址是:/default.aspx?id=1,我要重写成这样:/index- ...

  4. phpstudy配置伪静态的方法

    mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面.下面我详细说说它的使用方法1.检测Apache是否支持mod_rewrite通过php提供的phpinfo()函数查看环 ...

  5. Url重写——伪静态实现

    简述: 在我们浏览网站的时候,很多都是以.html结尾的.难道这些都是静态网页么?其实不是的,它们很多是伪静态 那么什么是伪静态?顾名思义,就是假的静态页面.通过某种设置让你看成是静态的. Q:为何要 ...

  6. Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案

    原文地址:Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案 启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:&quo ...

  7. IIS7.5使用web.config设置伪静态的二种方法

    转自 网上赚钱自学网 .http://www.whosmall.com/post/121 近几天公司里开发的项目有几个运行在IIS7.5上,由于全站采用的是伪静态,因此从网上找到两两种方法来实现.这两 ...

  8. IIS7.5+WebConfig实现页面伪静态和301重定向

    IIS7.5+WebConfig实现页面伪静态和301重定向 使用URLRewriter组件在windows 2003 +iis 6.0下配置伪静态的文章网络上一大堆.但在iis7.0或iis 7.5 ...

  9. 伪静态下Post无法响应的问题

    页面进行伪静态,Post的地址就不要写相对路径了,这样容易出错. 原来路径为,/SC/ProductDetail.aspx?id=110 用相对路径, 那么post的地址为:/SC/ProductDe ...

  10. 在微软伪静态处理机制下action导致伪静态的地址重现的问题

    伪静态前的地址:/sc/ProductList.aspx?pClass=0&descType=2&minPrice=1&maxPrice=11 伪静态后的地址:/product ...

随机推荐

  1. 牛可乐发红包脱单OI赛 C 小可爱表白

    打个暴力查一下OEIS,5min做完 出题人一开始把式子打错了,一开始的式子的结果为$n * (n + 3) * 2^{n - 3}$ 我们考虑化式子 首先考虑 $\sum\limits_{j = 1 ...

  2. bzoj 3252: 攻略

    3252: 攻略 Description 题目简述:树版[k取方格数]   众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏. 今天他得到了一款新游戏<XX半岛>, ...

  3. [BZOJ2716]天使玩偶

    [BZOJ2716]天使玩偶 题目大意: 一个平面直角坐标系,坐标\(1\le x,y\le10^6\).\(n(n\le10^6)\)次操作,操作包含以下两种: 新增一个点\((x,y)\): 询问 ...

  4. 【BZOJ】4152: [AMPPZ2014]The Captain【SLF优化Spfa】

    4152: [AMPPZ2014]The Captain Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 2107  Solved: 820[Submi ...

  5. mac os 切换网络优先级

    升级到新系统OS X Yesemite 系统后有WIFI时会默认使用WIFI而不是有线. 但是公司的WIFI基本没法用,每次到公司之后就得把WIFI关掉,回家又打开,烦死了. 今天研究了下原来网络优先 ...

  6. 模板 快速询问GCD

    快速询问两个数的GCD 我觉得只有智障会卡这个玩意儿-- const int maxn = 1e6; const int Sqrt_N = 1e3; int pre[maxn + 1] , decom ...

  7. .NET面试宝典-高级(一)

    1. DateTime.Parse(myString); 这段代码有什么问题? A:区域信息即CultureInfo没有指定.如果不指定的话,它将采用默认的机器级的设置(见:控制面板->区域和语 ...

  8. centos7安装maven

    下载maven 下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3. ...

  9. hadoop 2.7.1 高可用安装部署

    hadoop集群规划 目标:创建2个NameNode,做高可用,一个NameNode挂掉,另一个能够启动:一个运行Yarn,3台DataNode,3台Zookeeper集群,做高可用. 在hadoop ...

  10. BitmapFactory.Options.inSampleSize 的使用方法

    BitmapFactory.decodeFile(imageFile); 用BitmapFactory解码一张图片时.有时会遇到该错误. 这往往是因为图片过大造成的. 要想正常使用,则须要分配更少的内 ...