apache rewrite 功能之根据是文件是否存在进行伪静态
至于apache的伪静态要作用的启用那些就不讲了。现在主要讲: 一个虚拟主目中有几个子目录有一些文件,当访问的文件存在时就直接返回文件,否则就返回伪静态的查询结果。
环境: apache2.2.15 + rhel6u4_x64
# pwd
/webroot/webb
# ls -F
a/dir.phpindex.htmlRedhat3/Redhat4/Redhat5/Redhat6/Redhat7/
# ls Redhat4
a.htmld.htmlg.htmlj.htmlm.htmlp.htmls.htmlv.htmly.html
b.htmle.htmlh.htmlk.htmln.htmlq.htmlt.htmlw.htmlz.html
c.htmlf.htmli.htmll.htmlo.htmlr.htmlu.htmlx.html
dir.php 的作用,只接收一个参数,就显示出来:
# cat dir.php
web b dir to .
。。。。
要求: 如果访问到存的存在文件时,就返回文件本身,如果是存在的目录是,就显示目录是的内容,
如果是不存在文件时,就会用伪静态显示出结果:
配置:
DocumentRoot /webroot/webb/
ServerNameb.long.com
Options Indexes
order deny,allow
allow from all
RewriteEngine On #启用rewrite
RewriteCond %{REQUEST_FILENAME} !-f #判断文件是否存在
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d #判断真实文件或目录是否存在, %{DOCUMENT_ROOT}是当前的虚拟主机的根目录
RewriteRule ^/(*)$ %{DOCUMENT_ROOT}/dir.php?id=$1 #如果以上的文件时,过就行rewrite功能,将(*)转化为后面的请求。
重启服务: service httpd restart
结果显示:
存在的文件
不存在的文件:
页:
[1]