至於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
結果顯示:
存在的文件
不存在的文件: