apache rewrite 功能之根據是文件是否存在進行僞靜態

至於apache的僞靜態要作用的啓用那些就不講了。


現在主要講: 一個虛擬主目中有幾個子目錄有一些文件,當訪問的文件存在時就直接返回文件,否則就返回僞靜態的查詢結果。



環境: apache2.2.15 + rhel6u4_x64

[root@redhat6 webb]# pwd

/webroot/webb

[root@redhat6 webb]# ls -F

a/  dir.php  index.html  Redhat3/  Redhat4/  Redhat5/  Redhat6/  Redhat7/


[root@redhat6 webb]# ls Redhat4

a.html  d.html  g.html  j.html  m.html  p.html  s.html  v.html  y.html

b.html  e.html  h.html  k.html  n.html  q.html  t.html  w.html  z.html

c.html  f.html  i.html  l.html  o.html  r.html  u.html  x.html


dir.php 的作用,只接收一個參數,就顯示出來:

[root@redhat6 webb]# cat dir.php
<html>
<body>
<h1>
 web b dir to <?php echo $_GET['id']; ?>.
</h1>
</body>
</html>



。。。。


要求: 如果訪問到存的存在文件時,就返回文件本身,如果是存在的目錄是,就顯示目錄是的內容,

如果是不存在文件時,就會用僞靜態顯示出結果:

配置:

<VirtualHost *:9002>
    DocumentRoot /webroot/webb/
    ServerName  b.long.com
    <Directory "/webroot/webb">
        Options Indexes
        order deny,allow
        allow from all
    </Directory>
     RewriteEngine On                            #啓用rewrite
     RewriteCond %{REQUEST_FILENAME} !-f         #判斷文件是否存在
     RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d   #判斷真實文件或目錄是否存在, %{DOCUMENT_ROOT}是當前的虛擬主機的根目錄
[QSA,L]
     RewriteRule ^/([/w]*)$ %{DOCUMENT_ROOT}/dir.php?id=$1 [QSA,L]                                          #如果以上的文件時,過就行rewrite功能,將([/w]*)轉化爲後面的請求。
</VirtualHost>



重啓服務: service httpd restart


結果顯示:


   存在的文件

   wKiom1NWcfTjxrT6AACQ29gpVVQ706.jpg


wKioL1NWceCwcqbqAAH9n52ziTA999.jpg


不存在的文件:


wKioL1NWcfiDs8p3AACUwKaPl9Q414.jpg







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章