olga 发表于 2018-11-22 13:42:32

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]
查看完整版本: apache rewrite 功能之根据是文件是否存在进行伪静态