【PHP 】伪静态 - 4. 实际运用
伪静态的实际运用
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. 实际运用的更多相关文章
- PHP如何实现网址伪静态
Apache的 mod_rewrite是比较强大的,在进行网站建设时,可以通过这个模块来实现伪静态. 主要步骤如下: 1.检测Apache是否开启mod_rewrite功能 可以通过php提供 ...
- wamp集成环境开启rewrite伪静态支持
wamp集成环境在安装完后,默认是没有开启伪静态的,所以有时把项目部署进去时如果源码里包含.htaccess文件的话,可能会出现500错误,这一般是因为不支持伪静态造成的,解决这个问题的办法就是开启伪 ...
- ASP.NET伪静态实现
ASP.NET伪静态实现 在asp.net下,如何自己写代码来实现伪静态呢?如何重写url地址呢? 例如:本来aspx的页面地址是:/default.aspx?id=1,我要重写成这样:/index- ...
- phpstudy配置伪静态的方法
mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面.下面我详细说说它的使用方法1.检测Apache是否支持mod_rewrite通过php提供的phpinfo()函数查看环 ...
- Url重写——伪静态实现
简述: 在我们浏览网站的时候,很多都是以.html结尾的.难道这些都是静态网页么?其实不是的,它们很多是伪静态 那么什么是伪静态?顾名思义,就是假的静态页面.通过某种设置让你看成是静态的. Q:为何要 ...
- Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案
原文地址:Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案 启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:&quo ...
- IIS7.5使用web.config设置伪静态的二种方法
转自 网上赚钱自学网 .http://www.whosmall.com/post/121 近几天公司里开发的项目有几个运行在IIS7.5上,由于全站采用的是伪静态,因此从网上找到两两种方法来实现.这两 ...
- IIS7.5+WebConfig实现页面伪静态和301重定向
IIS7.5+WebConfig实现页面伪静态和301重定向 使用URLRewriter组件在windows 2003 +iis 6.0下配置伪静态的文章网络上一大堆.但在iis7.0或iis 7.5 ...
- 伪静态下Post无法响应的问题
页面进行伪静态,Post的地址就不要写相对路径了,这样容易出错. 原来路径为,/SC/ProductDetail.aspx?id=110 用相对路径, 那么post的地址为:/SC/ProductDe ...
- 在微软伪静态处理机制下action导致伪静态的地址重现的问题
伪静态前的地址:/sc/ProductList.aspx?pClass=0&descType=2&minPrice=1&maxPrice=11 伪静态后的地址:/product ...
随机推荐
- QT学习笔记3:QT中语法说明
一.Qt 类中Q_OBJECT的作用 QObject 是所有Qt对象的基类. QObject 是Qt模块的核心.它的最主要特征是关于对象间无缝通信的机制:信号与槽.使用connect()建立信号到槽的 ...
- 【Naive Splay Template】
写小作业的时候重新复习了一下splay 只支持插入,删除,查k大,查节点数.没有迭代器. T类型需要重载==和<,要调用拷贝构造函数. template<class T> class ...
- sgu 176 上下界网络流最小可行流带输出方案
算法步骤: 1. 先将原图像最大可行流那样变换,唯一不同的是不加dst->src那条边来将它变成无源无汇的网络流图.直接跑一边超级源到超级汇的最大流. 2. 加上刚才没有加上的那条边p 3. 再 ...
- Codeforces Round #350 (Div. 2) A. Holidays 水题
A. Holidays 题目连接: http://www.codeforces.com/contest/670/problem/A Description On the planet Mars a y ...
- Codeforces Round #294 (Div. 2)C - A and B and Team Training 水题
C. A and B and Team Training time limit per test 1 second memory limit per test 256 megabytes input ...
- java_线程的几种状态
java thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在正常 ...
- Any way to start Google Chrome in headless mode?
Any way to start Google Chrome in headless mode? - Stack Overflow Any way to start Google Chrome in ...
- ELNEC Programmer
BeeHive204 Very fast universal 4x 48-pindrive concurrent multiprogramming system with ISP capability ...
- Windows+VS2012环境下编译调试MySQL源码 转
http://m.blog.csdn.net/blog/SnowyWolf/18952643
- centos安装sqlserver
centos安装sqlserver 必要條件 您必须具有 RHEL 7.3 或 7.4 计算机至少 2 GB的内存. 若要在自己的计算机上安装 Red Hat Enterprise Linux,请转到 ...