基於ZF中的.htaccess文件學習Apache的Rewrite語法

  1. RewriteEngine On  
  2. RewriteCond %{REQUEST_FILENAME} -s [OR]  
  3. RewriteCond %{REQUEST_FILENAME} -l [OR]  
  4. RewriteCond %{REQUEST_FILENAME} -d  
  5. RewriteRule ^.*$ - [NC,L]  
  6. RewriteRule ^.*$ index.php [NC,L] 


這裏面涉及到了3個指令:

1、RewriteEngine  最簡單,控制重定向引擎的開關。第一條指令表示打開重定向引擎。

2、RewriteCond 指令稍微複雜一些。每一條這個指令定義一個條件,只有這個條件滿足時,跟在這個指令之後的那條 RewriteRule 纔會起作用。注意:這個指令只爲之後的一條 RewriteRule 指令提供條件!比如,上面文件中的第二條 RewriteRule 指令就不需要必須在之前的 RewriteCond 指令滿足的情況下才執行。

如果想同時判斷多個條件的話,可以在後面加上 [OR] 標誌,表示暫時不結束判斷,繼續看下一條 RewriteCond 指令。

這條指令的第二個參數是被判斷的值,在這裏是服務器變量 %{REQUEST_FILENAME} 

第三個參數是匹配模式,文件當中用到的幾個匹配模式的意思分別爲:

-s 判斷第二個參數是否是服務器上存在的,大小大於0的常規文件;

-l 判斷第二個參數是否是服務器上存在的,符號鏈接文件;

-d 判斷第二個參數是否是服務器上存在的,文件夾;

如果符合這三條中的任意一條,就會執行第一條 RewriteRule 指令。

3、那麼就讓我們來看看 RewriteRule 指令。

RewriteRule 指令的第二個參數是個正則表達式。第一個起作用的 RewriteRule 指令的正則會應用於請求的URL地址(urlencode那種的);之後的RewriteRule指令則將正則應用於上一條指令的結果。

這條指令的第三個參數是被替換的值。- 表示保持原樣,不替換。

這條指令後面也可以加標誌。比如 NC 標誌的意思是 no case,L 標誌就是 停止下面的 RewriteRule 指令的執行。

所以,ZF這個文件的意思就是如果是服務器中存在的文件,就不要做重定向;如果請求路徑中的文件不存在,就重定向到index.php。


原http://blog.csdn.net/topasstem8/article/details/25082987

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